package org.tessell.widgets; import static org.hamcrest.CoreMatchers.sameInstance; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.junit.Assert.assertTrue; import org.junit.Test; import org.tessell.gwt.dom.client.StubClickEvent; import org.tessell.gwt.user.client.ui.IsWidget; import org.tessell.gwt.user.client.ui.StubFlowPanel; import org.tessell.gwt.user.client.ui.StubTextBox; import org.tessell.util.WidgetUtils; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.FocusEvent; import com.google.gwt.event.dom.client.FocusHandler; public class StubWidgetTest { @Test public void testFindByIdWithChildren() { StubFlowPanel parent = new StubFlowPanel(); StubFlowPanel child = new StubFlowPanel(); child.ensureDebugId("child"); parent.add(child); assertThat(parent.findById("child"), is(sameInstance((IsWidget) child))); } @Test public void testFindByIdWithGrandchildren() { StubFlowPanel parent = new StubFlowPanel(); StubFlowPanel child = new StubFlowPanel(); StubFlowPanel grandchild = new StubFlowPanel(); grandchild.ensureDebugId("grandchild"); parent.add(child); child.add(grandchild); assertThat(parent.findById("grandchild"), is(sameInstance((IsWidget) grandchild))); } @Test public void testFindByIdWithCompositeIsWidget() { StubFlowPanel parent = new StubFlowPanel(); StubFlowPanel uiXmlContent = new StubFlowPanel(); uiXmlContent.ensureDebugId("uiXmlContent"); CompositeIsWidget c = new CompositeIsWidget(); c.setWidget(uiXmlContent); parent.add(c); assertThat(parent.findById("uiXmlContent"), is(sameInstance((IsWidget) uiXmlContent))); } @Test public void testDomHandler() { StubWidget w = new StubWidget(); final boolean[] clicked = { false }; w.addDomHandler(new ClickHandler() { public void onClick(ClickEvent event) { clicked[0] = true; } }, ClickEvent.getType()); w.fireEvent(new StubClickEvent()); assertThat(clicked[0], is(true)); } @Test public void testEventsCausedWithinHandlersFireImmediately() { final StubTextBox b = new StubTextBox(); b.fireAttached(); final boolean[] inClickHandler = { false }; final boolean[] wasInClickHandler = { false }; b.addClickHandler(new ClickHandler() { public void onClick(ClickEvent arg0) { inClickHandler[0] = true; WidgetUtils.focus(b); inClickHandler[0] = false; } }); b.addFocusHandler(new FocusHandler() { public void onFocus(FocusEvent arg0) { wasInClickHandler[0] = inClickHandler[0]; } }); b.click(); assertTrue(wasInClickHandler[0]); } }