package org.vaadin.smartgwt.server.layout;
import static org.junit.Assert.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InOrder;
import org.vaadin.smartgwt.server.Window;
import org.vaadin.smartgwt.server.core.RegistrationEntry;
import com.google.common.collect.ImmutableList;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.Paintable.RepaintRequestEvent;
import com.vaadin.terminal.Paintable.RepaintRequestListener;
import com.vaadin.terminal.gwt.server.JsonPaintTarget;
public class MasterContainerTest {
private MasterContainer container;
@Before
public void before() {
container = new MasterContainer();
}
@Test
public void test_registerWindow() {
final Window window = mock(Window.class);
assertTrue(container.register(window).isRegistered());
}
@Test
public void test_registeringWindowForcesRepaint() {
final RepaintRequestListener listener = mock(RepaintRequestListener.class);
final Window window = mock(Window.class);
container.addListener(listener);
container.register(window);
verify(listener).repaintRequested(isA(RepaintRequestEvent.class));
}
@Test
public void test_unregisterWindow() {
final Window window = mock(Window.class);
final RegistrationEntry registration = container.register(window);
registration.unregister();
assertFalse(registration.isRegistered());
}
@Test
public void test_unregisteringWindowForcesRepaint() {
final RepaintRequestListener listener = mock(RepaintRequestListener.class);
final Window window = mock(Window.class);
final RegistrationEntry registration = container.register(window);
container.addListener(listener);
registration.unregister();
verify(listener).repaintRequested(isA(RepaintRequestEvent.class));
}
@Test
public void test_addNonUIComponent() {
final NonUIComponent nonUIComponent = mock(NonUIComponent.class);
container.addNonUIComponent(nonUIComponent);
assertTrue(ImmutableList.copyOf(container.getNonUIComponentIterator()).contains(nonUIComponent));
}
@Test
public void test_removeNonUIComponent() {
final NonUIComponent nonUIComponent = mock(NonUIComponent.class);
container.addNonUIComponent(nonUIComponent);
container.removeNonUIComponent(nonUIComponent);
assertFalse(ImmutableList.copyOf(container.getNonUIComponentIterator()).contains(nonUIComponent));
}
@Test
public void test_paintsNonUIComponent() throws PaintException {
final JsonPaintTarget paintTarget = mock(JsonPaintTarget.class);
final NonUIComponent nonUIComponent = mock(NonUIComponent.class);
container.addNonUIComponent(nonUIComponent);
container.paintContent(paintTarget);
final InOrder inOrder = inOrder(paintTarget, nonUIComponent);
inOrder.verify(paintTarget).startTag("$nonUIComponents");
inOrder.verify(nonUIComponent).paint(paintTarget);
inOrder.verify(paintTarget).endTag("$nonUIComponents");
}
}