package org.vaadin.smartgwt.server.core; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Before; import org.junit.Test; import com.google.common.collect.Iterators; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.gwt.server.JsonPaintTarget; import com.vaadin.ui.Component; public class ComponentListTest { private ComponentList<Component> componentList; @Before public void before() { componentList = new ComponentList<Component>(mock(Component.class), "components"); } @Test public void test_paintsRemovalInstruction() throws PaintException { final Component component = mock(Component.class); final JsonPaintTarget paintTarget = mock(JsonPaintTarget.class); // adds component and paint to clear instructions. componentList.add(component); componentList.paintContent(mock(JsonPaintTarget.class)); componentList.remove(component); componentList.paintContent(paintTarget); verify(paintTarget).startTag("remove"); verify(paintTarget).addAttribute("element", component); } @Test public void test_removesComponentThatWasRemovedClientSide() { final Component component = mock(Component.class); componentList.add(component); componentList.clientRemoved(component); assertFalse(Iterators.contains(componentList.iterator(), component)); } @Test public void test_noPaintWhenClientRemoved() throws PaintException { final Component component = mock(Component.class); final JsonPaintTarget paintTarget = mock(JsonPaintTarget.class); // adds component and paint to clear instructions. componentList.add(component); componentList.paintContent(mock(JsonPaintTarget.class)); componentList.clientRemoved(component); componentList.paintContent(paintTarget); verify(paintTarget, never()).startTag("remove"); } }