package org.dashbuilder.client.widgets.dataset.editor.column;
import com.google.gwt.safehtml.shared.SafeUri;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwtmockito.GwtMockitoTestRunner;
import org.dashbuilder.common.client.editor.list.DropDownImageListEditor;
import org.dashbuilder.dataset.ColumnType;
import org.dashbuilder.dataset.def.DataColumnDef;
import org.gwtbootstrap3.client.ui.constants.Placement;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import java.util.Collection;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;
@RunWith(GwtMockitoTestRunner.class)
public class ColumnTypeEditorTest {
@Mock DropDownImageListEditor<ColumnType> columnType;
@Mock Widget columnTypeWidget;
private ColumnTypeEditor presenter;
@Before
public void setup() {
presenter = spy(new ColumnTypeEditor(columnType));
final SafeUri uri = mock(SafeUri.class);
doReturn(uri).when(presenter).getImageUri(any(ColumnType.class));
when(columnType.asWidget()).thenReturn(columnTypeWidget);
}
@Test
public void testAsWidget() {
assertEquals(columnTypeWidget, presenter.asWidget());
}
@Test
public void testInit() {
presenter.init();
verify(columnType, times(1)).setImageSize(anyString(), anyString());
verify(columnType, times(1)).setEntries(any(Collection.class));
verify(columnType, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(columnType, times(0)).isEditMode(anyBoolean());
}
@Test
public void testAddHelpContent() {
final Placement p = mock(Placement.class);
presenter.addHelpContent("t1", "c1", p);
verify(columnType, times(1)).addHelpContent("t1", "c1", p);
verify(columnType, times(0)).setImageSize(anyString(), anyString());
verify(columnType, times(0)).setEntries(any(Collection.class));
verify(columnType, times(0)).isEditMode(anyBoolean());
}
@Test
public void testColumnType() {
assertEquals(columnType, presenter.columnType());
}
@Test
public void testEnableEditMode() {
presenter.isEditMode(true);
verify(columnType, times(1)).isEditMode(true);
verify(columnType, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(columnType, times(0)).setImageSize(anyString(), anyString());
verify(columnType, times(0)).setEntries(any(Collection.class));
}
@Test
public void testDisableEditMode() {
presenter.isEditMode(false);
verify(columnType, times(1)).isEditMode(false);
verify(columnType, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(columnType, times(0)).setImageSize(anyString(), anyString());
verify(columnType, times(0)).setEntries(any(Collection.class));
}
@Test
public void testSetValue() {
final DataColumnDef col1 = mock(DataColumnDef.class);
when(col1.getId()).thenReturn("col1");
when(col1.getColumnType()).thenReturn(ColumnType.LABEL);
presenter.setValue(col1);
verify(columnType, times(1)).setEntries(any(Collection.class));
verify(columnType, times(0)).isEditMode(anyBoolean());
verify(columnType, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(columnType, times(0)).setImageSize(anyString(), anyString());
}
@Test
public void testSetOriginalColumnType() {
ColumnType type = mock(ColumnType.class);
presenter.setOriginalColumnType(type);
verify(columnType, times(1)).setEntries(any(Collection.class));
verify(columnType, times(0)).isEditMode(anyBoolean());
verify(columnType, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(columnType, times(0)).setImageSize(anyString(), anyString());
}
}