package ro.isdc.wro.model.resource.support.change;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import ro.isdc.wro.config.Context;
import ro.isdc.wro.manager.factory.BaseWroManagerFactory;
import ro.isdc.wro.manager.factory.WroManagerFactory;
import ro.isdc.wro.model.group.Inject;
import ro.isdc.wro.model.group.processor.Injector;
import ro.isdc.wro.model.group.processor.InjectorBuilder;
import ro.isdc.wro.model.resource.locator.factory.SimpleUriLocatorFactory;
import ro.isdc.wro.util.WroTestUtils;
/**
* @author Alex Objelean
*/
public class TestResourceChangeDetector {
private static final String GROUP1_NAME = "g1";
private static final String GROUP2_NAME = "g2";
@Inject
private ResourceChangeDetector victim;
@Before
public void setUp() {
Context.set(Context.standaloneContext());
final WroManagerFactory managerFactory = new BaseWroManagerFactory()
.setUriLocatorFactory(new SimpleUriLocatorFactory().addLocator(WroTestUtils.createResourceMockingLocator()));
final Injector injector = InjectorBuilder.create(managerFactory).build();
injector.inject(this);
}
@After
public void tearDown() {
Context.unset();
}
@Test(expected = NullPointerException.class)
public void cannotCheckInvalidUriForChange()
throws Exception {
victim.checkChangeForGroup(null, GROUP1_NAME);
}
@Test(expected = NullPointerException.class)
public void cannotCheckInvalidGroupNameForChange()
throws Exception {
victim.checkChangeForGroup("resource", null);
}
@Test
public void shouldRequireChangeAtFirstCheck()
throws Exception {
assertTrue(victim.checkChangeForGroup("resource", GROUP1_NAME));
}
@Test
public void shouldRequireChangeAfterReset()
throws Exception {
victim.checkChangeForGroup("resource", GROUP1_NAME);
victim.reset();
assertFalse(victim.checkChangeForGroup("resource", GROUP1_NAME));
assertTrue(victim.checkChangeForGroup("resource", GROUP2_NAME));
}
}