package org.dashbuilder.client.widgets.dataset.editor; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwtmockito.GwtMockitoTestRunner; import org.dashbuilder.client.widgets.dataset.event.FilterChangedEvent; import org.dashbuilder.dataprovider.DataSetProviderType; import org.dashbuilder.dataset.DataSetMetadata; import org.dashbuilder.dataset.def.DataSetDef; import org.dashbuilder.dataset.filter.DataSetFilter; import org.dashbuilder.displayer.client.events.DataSetFilterChangedEvent; import org.dashbuilder.displayer.client.widgets.filter.DataSetFilterEditor; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.uberfire.mocks.EventSourceMock; import static org.jgroups.util.Util.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Mockito.*; @RunWith(GwtMockitoTestRunner.class) public class DataSetDefFilterEditorTest { @Mock EventSourceMock<FilterChangedEvent> filterChangedEvent; @Mock DataSetDefFilterEditor.View view; @Mock DataSetDef dataSetDef; @Mock DataSetFilterEditor dataSetFilterEditor; @Mock DataSetMetadata dataSetMetadata = mock(DataSetMetadata.class); @Mock DataSetFilter filter1 = mock(DataSetFilter.class); @Mock DataSetFilter filter2 = mock(DataSetFilter.class); private DataSetDefFilterEditor tested; @Before public void setup() throws Exception { when(dataSetDef.getUUID()).thenReturn("uuid1"); when(dataSetDef.getName()).thenReturn("name1"); when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.BEAN); when(filter1.cloneInstance()).thenReturn(filter2); tested = new DataSetDefFilterEditor(view, dataSetFilterEditor, filterChangedEvent); } @Test public void testInit() throws Exception { verify(view).init(tested); } @Test public void testInitFilterEditor() throws Exception { tested.value = filter1; tested.init(dataSetMetadata); verify(view).setWidget(any(IsWidget.class)); verify(dataSetFilterEditor).init(eq(filter2), eq(dataSetMetadata)); } @Test public void testSetValue() throws Exception { tested.setValue(filter1); assertEquals(filter2, tested.value); verify(view, never()).setWidget(any(IsWidget.class)); verify(dataSetFilterEditor, never()).init(any(DataSetFilter.class), any(DataSetMetadata.class)); } @Test public void testOnValueChanged() throws Exception { DataSetFilter filter3 = mock(DataSetFilter.class); when(filter2.cloneInstance()).thenReturn(filter3); tested.value = filter1; tested.onValueChanged(new DataSetFilterChangedEvent(filter2)); assertEquals(filter3, tested.value); verify(view, never()).setWidget(any(IsWidget.class)); verify(dataSetFilterEditor, never()).init(any(DataSetFilter.class), any(DataSetMetadata.class)); verify(filterChangedEvent).fire(any(FilterChangedEvent.class)); } }