/* vim: set ts=2 et sw=2 cindent fo=qroca: */
package com.globant.katari.gadgetcontainer.domain;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import static org.easymock.EasyMock.*;
import org.junit.Before;
import org.junit.Test;
import java.util.Set;
import java.io.File;
import com.globant.katari.hibernate.coreuser.domain.CoreUser;
import com.globant.katari.shindig.domain.Application;
/** Test for the bean {@link GadgetGroupTemplate}
*/
public class GadgetGroupTemplateTest {
private String gadgetXmlUrl = "file:///" + new File(
"target/test-classes/SampleGadget.xml").getAbsolutePath();
private CoreUser user;
private Application application;
@Before
public void setUp() {
user = createNiceMock(CoreUser.class);
expect(user.getId()).andReturn(1L);
replay(user);
application = new Application(gadgetXmlUrl);
}
@Test
public void testConstructorOk() {
GadgetGroupTemplate group = new GadgetGroupTemplate("groupName", "default", 1);
assertTrue(group.getId() == 0);
assertTrue(group.getName().equals("groupName"));
assertThat(group.getView(), is("default"));
}
@Test
public void testConstructorWithNullPageName() {
try {
new GadgetGroupTemplate(null, "default", 1);
fail("Should be an illegal argument exception because pagename is null");
} catch (IllegalArgumentException e) {
}
}
@Test
public void testConstructorWithEmptyPageName() {
try {
new GadgetGroupTemplate("", "default", 1);
fail("Should be an illegal argument exception because pagename is empty");
} catch (IllegalArgumentException e) {
}
}
@Test(expected = IllegalArgumentException.class)
public void testConstructor_emptyView() {
new GadgetGroupTemplate("something", "", 1);
}
@Test
public void testCreateFromTemplate() {
// Create a group with tree gadget instances.
GadgetGroupTemplate group;
group = new GadgetGroupTemplate("main group", "default", 3);
// The template group must not have an owner.
group.add(new GadgetInstance(application, 0, 0));
group.add(new GadgetInstance(application, 0, 1));
group.add(new GadgetInstance(application, 0, 3));
CustomizableGadgetGroup newGroup = group.createFromTemplate(user);
assertThat(newGroup.getOwner(), is(user));
assertThat(newGroup.getName(), is("main group"));
assertThat(newGroup.getView(), is("default"));
assertThat(newGroup.getNumberOfColumns(), is(3));
Set<GadgetInstance> instances = newGroup.getGadgets();
assertThat(instances, notNullValue());
assertThat(instances.size(), is(3));
// We just check one gadget ...
assertThat(instances.iterator().next().getTitle(), is("Test title"));
}
@Test
public void testContains_false() {
// Create a group with one gadget instance.
GadgetGroupTemplate group;
group = new GadgetGroupTemplate("main group", "default", 3);
assertThat(group.contains(application), is(false));
}
@Test
public void testContains_true() {
// Create a group with one gadget instance.
GadgetGroupTemplate group;
group = new GadgetGroupTemplate("main group", "default", 3);
group.add(new GadgetInstance(application, 0, 0));
assertThat(group.contains(application), is(true));
}
}