/*
* Copyright (c) 2010. All rights reserved.
*/
package ro.isdc.wro.model;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import ro.isdc.wro.config.Context;
import ro.isdc.wro.model.factory.WroModelFactory;
import ro.isdc.wro.model.factory.XmlModelFactory;
import ro.isdc.wro.model.group.Group;
import ro.isdc.wro.model.group.InvalidGroupNameException;
import ro.isdc.wro.model.resource.Resource;
/**
* Test class for WroModel..
*
* @author Alex Objelean
* @created Created on Jan 6, 2010
*/
public class TestWroModel {
private WroModel victim;
private WroModelFactory factory;
@BeforeClass
public static void onBeforeClass() {
assertEquals(0, Context.countActive());
}
@AfterClass
public static void onAfterClass() {
assertEquals(0, Context.countActive());
}
@Before
public void setUp() {
final Context context = Context.standaloneContext();
Context.set(context);
victim = buildValidModel();
}
@After
public void tearDown() {
Context.unset();
factory.destroy();
}
@Test
public void testGetExistingGroup() {
Assert.assertFalse(victim.getGroups().isEmpty());
final Group group = victim.getGroupByName("g1");
// create a copy of original list
assertEquals(1, group.getResources().size());
}
@Test(expected = InvalidGroupNameException.class)
public void testGetInvalidGroup() {
assertFalse(victim.getGroups().isEmpty());
victim.getGroupByName("INVALID_GROUP");
}
/**
* @return a valid {@link WroModel} pre populated with some valid resources.
*/
private WroModel buildValidModel() {
factory = new XmlModelFactory() {
@Override
protected InputStream getModelResourceAsStream() {
return getClass().getResourceAsStream("wro.xml");
}
};
// the uriLocator factory doesn't have any locators set...
final WroModel model = factory.create();
return model;
}
@Test
public void shouldNotReturnDuplicatedResources() {
final WroModel model = new WroModel();
assertEquals(0, new WroModelInspector(model).getAllUniqueResources().size());
model.addGroup(new Group("one").addResource(Resource.create("/one.js"))).addGroup(
new Group("two").addResource(Resource.create("/one.js")));
assertEquals(1, new WroModelInspector(model).getAllUniqueResources().size());
}
@Test(expected = NullPointerException.class)
public void cannotMergeNullModel() {
victim.merge(null);
}
@Test
public void shouldMergeEmptyModel() {
victim.merge(new WroModel());
assertEquals(buildValidModel(), victim);
}
@Test
public void shouldMergeNotEmptyModel() {
victim.merge(new WroModel().addGroup(new Group("anEmptyGroup")));
assertEquals(Arrays.asList("anEmptyGroup", "g1", "g2", "g3"), new WroModelInspector(victim).getGroupNames());
}
@Test(expected = NullPointerException.class)
public void cannotSetNullGroups() {
victim.setGroups(null);
}
@Test
public void shouldSetValidGroups() {
victim.setGroups(Collections.EMPTY_LIST);
assertEquals(0, victim.getGroups().size());
}
}