package org.dashbuilder.client.widgets.dataset.explorer;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwtmockito.GwtMockitoTestRunner;
import org.dashbuilder.client.widgets.dataset.event.EditDataSetEvent;
import org.dashbuilder.dataprovider.DataSetProviderType;
import org.dashbuilder.dataset.def.DataSetDef;
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.Matchers.anyString;
import static org.mockito.Mockito.*;
@RunWith(GwtMockitoTestRunner.class)
public class DataSetPanelTest {
@Mock DataSetSummary dataSetSummary;
@Mock EventSourceMock<EditDataSetEvent> editDataSetEvent;
@Mock DataSetPanel.View view;
@Mock DataSetDef dataSetDef;
private DataSetPanel presenter;
@Before
public void setup() throws Exception {
when(dataSetDef.getUUID()).thenReturn("uuid1");
when(dataSetDef.getName()).thenReturn("name1");
when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.BEAN);
// The presenter instance to test.
final Widget widget = mock(Widget.class);
when(view.asWidget()).thenReturn(widget);
presenter = spy(new DataSetPanel(dataSetSummary, editDataSetEvent, view));
}
@Test
public void testInit() throws Exception {
presenter.init();
verify(view, times(1)).init(presenter);
verify(view, times(1)).configure(any(DataSetSummary.View.class));
verify(view, times(0)).showHeader(anyString(), anyString(), any(SafeUri.class), anyString(), anyString());
verify(view, times(0)).showSummary();
verify(view, times(0)).hideSummary();
verify(view, times(0)).enableActionButton(anyString(), any(ClickHandler.class));
verify(view, times(0)).disableActionButton();
}
@Test
public void testAsWidget() throws Exception {
assertEquals(view.asWidget(), presenter.asWidget());
}
@Test
public void testClose() throws Exception {
presenter.close();
verify(view, times(0)).init(presenter);
verify(view, times(0)).configure(any(DataSetSummary.View.class));
verify(view, times(0)).showHeader(anyString(), anyString(), any(SafeUri.class), anyString(), anyString());
verify(view, times(0)).showSummary();
verify(view, times(1)).hideSummary();
verify(view, times(0)).enableActionButton(anyString(), any(ClickHandler.class));
verify(view, times(0)).disableActionButton();
}
@Test
public void testDisable() throws Exception {
presenter.disable();
verify(view, times(0)).init(presenter);
verify(view, times(0)).configure(any(DataSetSummary.View.class));
verify(view, times(0)).showHeader(anyString(), anyString(), any(SafeUri.class), anyString(), anyString());
verify(view, times(0)).showSummary();
verify(view, times(0)).hideSummary();
verify(view, times(0)).enableActionButton(anyString(), any(ClickHandler.class));
verify(view, times(1)).disableActionButton();
}
@Test
public void testShow() throws Exception {
final String iconTitle = "iconTitle";
doReturn(iconTitle).when(presenter).getTypeIconTitle(dataSetDef);
final SafeUri iconUri = mock(SafeUri.class);
doReturn(iconUri).when(presenter).getTypeIconUri(dataSetDef);
final String parentPanelId = "parentPanel";
presenter.show(dataSetDef, parentPanelId);
assertEquals(dataSetDef, presenter.getDataSetDef());
verify(view, times(0)).init(presenter);
verify(view, times(0)).configure(any(DataSetSummary.View.class));
verify(view, times(1)).showHeader("uuid1", parentPanelId, iconUri, iconTitle, "name1");
verify(view, times(0)).showSummary();
verify(view, times(0)).hideSummary();
verify(view, times(0)).enableActionButton(anyString(), any(ClickHandler.class));
verify(view, times(0)).disableActionButton();
}
@Test
public void testOpen() throws Exception {
presenter.def = dataSetDef;
presenter.open();
verify(dataSetSummary, times(1)).show(dataSetDef);
verify(view, times(0)).init(presenter);
verify(view, times(0)).configure(any(DataSetSummary.View.class));
verify(view, times(0)).showHeader(anyString(), anyString(), any(SafeUri.class), anyString(), anyString());
verify(view, times(1)).showSummary();
verify(view, times(0)).hideSummary();
verify(view, times(1)).enableActionButton(anyString(), any(ClickHandler.class));
verify(view, times(0)).disableActionButton();
}
}