package org.vaadin.smartgwt.server;
import static org.junit.Assert.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import java.util.HashMap;
import org.junit.Before;
import org.junit.Test;
import org.vaadin.smartgwt.server.events.ClickEvent;
import org.vaadin.smartgwt.server.events.ClickHandler;
import com.google.common.collect.Maps;
import com.google.web.bindery.event.shared.HandlerRegistration;
import com.vaadin.terminal.PaintException;
import com.vaadin.terminal.PaintTarget;
import com.vaadin.terminal.gwt.server.JsonPaintTarget;
public class CanvasTest {
private Canvas canvas;
@Before
public void before() {
canvas = new Canvas();
}
@Test
public void test_disabledProperty() {
canvas.setDisabled(true);
assertEquals(true, canvas.getDisabled());
}
@Test
public void test_enabledProperty() {
canvas.setEnabled(false);
assertEquals(false, canvas.isEnabled());
}
@Test
public void test_matchesEnabledAndDisabledProperties() {
canvas.setEnabled(false);
assertEquals(canvas.isEnabled(), !canvas.getDisabled());
canvas.setDisabled(false);
assertEquals(canvas.getDisabled(), !canvas.isEnabled());
}
@Test
public void test_paintsDisabledPropertyAsDynamic() throws PaintException {
final JsonPaintTarget target = mock(JsonPaintTarget.class);
canvas.setDisabled(true);
canvas.paintContent(target);
verify(target).addAttribute("b$disabled", true);
}
@Test
public void test_paintsClickHandlerRegistrationState() throws PaintException {
final PaintTarget target = mock(JsonPaintTarget.class);
final ClickHandler handler = mock(ClickHandler.class);
canvas.addClickHandler(handler);
canvas.paintContent(target);
verify(target).addAttribute("*hasClickHandlers", true);
}
@Test
public void test_doNotPaintClickHandlerRegistrationStateWhenNoneRegistered() throws PaintException {
final PaintTarget target = mock(JsonPaintTarget.class);
canvas.paintContent(target);
verify(target, never()).addAttribute("*hasClickHandlers", true);
}
@Test
public void test_notifiesClickHandlersOnClickEventVariableChange() {
final ClickHandler handler = mock(ClickHandler.class);
final HashMap<String, Object> variables = Maps.newHashMap();
variables.put("clickEvent", true);
canvas.addClickHandler(handler);
canvas.changeVariables(null, variables);
verify(handler).onClick(isA(ClickEvent.class));
}
@Test
public void test_unregistersClickHandlerWithHandlerRegistration() {
final ClickHandler handler = mock(ClickHandler.class);
final HandlerRegistration handlerRegistration;
final HashMap<String, Object> variables = Maps.newHashMap();
variables.put("clickEvent", true);
handlerRegistration = canvas.addClickHandler(handler);
handlerRegistration.removeHandler();
canvas.changeVariables(null, variables);
verify(handler, never()).onClick(isA(ClickEvent.class));
}
}