package org.bonitasoft.forms.client.view.widget; import static org.mockito.Mockito.*; import org.bonitasoft.forms.client.model.ReducedFormWidget; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwtmockito.GwtMockitoTestRunner; @RunWith(GwtMockitoTestRunner.class) public class FormButtonWidgetTest { FormButtonWidget buttonWidget; @Mock ReducedFormWidget formWidget; @Before public void setUp() throws Exception { buttonWidget = new FormButtonWidget(formWidget); } @Test public void testAddClickHandler_and_click_should_trigger_handler() throws Exception { ClickHandler clickHandler = mock(ClickHandler.class); buttonWidget.addClickHandler(clickHandler); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler, times(1)).onClick(clickEvent); } @Test public void testAddClickHandler_twice_and_click_should_trigger_handler_once() throws Exception { ClickHandler clickHandler = mock(ClickHandler.class); buttonWidget.addClickHandler(clickHandler); buttonWidget.addClickHandler(clickHandler); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler, times(1)).onClick(clickEvent); } @Test public void testAddClickHandler_with_id_and_click_should_trigger_handler() throws Exception { ClickHandler clickHandler = mock(ClickHandler.class); buttonWidget.addClickHandler("form", clickHandler); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler, times(1)).onClick(clickEvent); } @Test public void testAddClickHandler_with_id_twice_and_click_should_trigger_handler_once() throws Exception { ClickHandler clickHandler = mock(ClickHandler.class); buttonWidget.addClickHandler("form", clickHandler); buttonWidget.addClickHandler("form", clickHandler); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler, times(1)).onClick(clickEvent); } @Test public void testAddClickHandler_with_id_twice_and_without_once_and_click_should_trigger_handler_once() throws Exception { ClickHandler clickHandler = mock(ClickHandler.class); buttonWidget.addClickHandler("form", clickHandler); buttonWidget.addClickHandler("form", clickHandler); buttonWidget.addClickHandler(clickHandler); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler, times(2)).onClick(clickEvent); } @Test public void test_two_AddClickHandler_with_id_twice_and_once_and_click_should_trigger_handler_once_each() throws Exception { ClickHandler clickHandler1 = mock(ClickHandler.class); ClickHandler clickHandler2 = mock(ClickHandler.class); buttonWidget.addClickHandler("form1", clickHandler1); buttonWidget.addClickHandler("form1", clickHandler1); buttonWidget.addClickHandler("form2", clickHandler2); ClickEvent clickEvent = mock(ClickEvent.class); buttonWidget.onClick(clickEvent); verify(clickHandler1, times(1)).onClick(clickEvent); verify(clickHandler2, times(1)).onClick(clickEvent); } }