package org.vaadin.smartgwt.server.extra; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import org.junit.Before; import org.junit.Test; import com.vaadin.terminal.PaintException; import com.vaadin.terminal.gwt.server.JsonPaintTarget; public class RefresherTest { private Refresher refresher; @Before public void before() throws Exception { Refresher.class.getClassLoader().setClassAssertionStatus(Refresher.class.getName(), true); refresher = (Refresher) Refresher.class.getClassLoader().loadClass(Refresher.class.getName()).newInstance(); } @Test public void test_hasADefaultIntervalOfOneSecond() { assertEquals(1000, refresher.getInterval()); } @Test public void test_canSetInterval() { refresher.setInterval(3000); assertEquals(3000, refresher.getInterval()); } @Test(expected = AssertionError.class) public void test_assertsIntervalIsAPositiveNumber() { refresher.setInterval(-10); } @Test public void test_canAddARefreshListener() { final RefreshListener listener = mock(RefreshListener.class); refresher.addListener(listener); refresher.changeVariables(null, null); verify(listener).refresh(refresher); } @Test public void test_canRemoveRefreshListenerWithRegistrationHandler() { final RefreshListener listener = mock(RefreshListener.class); refresher.addListener(listener).removeHandler(); refresher.changeVariables(null, null); verify(listener, never()).refresh(refresher); } @Test public void test_paintsInterval() throws PaintException { final JsonPaintTarget paintTarget = mock(JsonPaintTarget.class); refresher.setInterval(1000); refresher.addListener(mock(RefreshListener.class)); refresher.paintContent(paintTarget); verify(paintTarget).addAttribute("interval", 1000); } @Test public void test_doesNotPaintIntervalWhenNoListenersAreRegistered() throws PaintException { final JsonPaintTarget paintTarget = mock(JsonPaintTarget.class); refresher.setInterval(1000); refresher.paintContent(paintTarget); verify(paintTarget, never()).addAttribute("interval", 1000); } }