package org.dashbuilder.client.widgets.dataset.editor.column;
import org.dashbuilder.dataprovider.DataSetProviderType;
import org.dashbuilder.dataset.ColumnType;
import org.dashbuilder.dataset.def.DataColumnDef;
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.mockito.runners.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.List;
import static org.jgroups.util.Util.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;
@RunWith(MockitoJUnitRunner.class)
public class DataSetDefColumnsEditorTest {
@Mock
ColumnListEditor columnListEditor;
private DataSetDefColumnsEditor presenter;
@Before
public void setup() {
presenter = new DataSetDefColumnsEditor(columnListEditor);
}
@Test
public void testSetAcceptableValues() {
final List acceptableValues = mock(List.class);
presenter.setAcceptableValues(acceptableValues);
assertEquals(acceptableValues, presenter.acceptableValues);
verify(columnListEditor, times(1)).setAcceptableValues(acceptableValues);
verify(columnListEditor, times(0)).onValueRestricted(anyString());
verify(columnListEditor, times(0)).onValueUnRestricted(anyString());
verify(columnListEditor, times(0)).setProviderType(any(DataSetProviderType.class));
}
@Test
public void testOnValueRestricted() {
final String v = "value";
presenter.onValueRestricted(v);
verify(columnListEditor, times(1)).onValueRestricted(v);
verify(columnListEditor, times(0)).onValueUnRestricted(anyString());
verify(columnListEditor, times(0)).setAcceptableValues(any(List.class));
verify(columnListEditor, times(0)).setProviderType(any(DataSetProviderType.class));
}
@Test
public void testOnValueUnRestricted() {
final String v = "value";
presenter.onValueUnRestricted(v);
verify(columnListEditor, times(1)).onValueUnRestricted(v);
verify(columnListEditor, times(0)).onValueRestricted(anyString());
verify(columnListEditor, times(0)).setAcceptableValues(any(List.class));
verify(columnListEditor, times(0)).setProviderType(any(DataSetProviderType.class));
}
@Test
public void testSetValueBeanType() {
final DataSetDef dataSetDef = mock(DataSetDef.class);
when(dataSetDef.getUUID()).thenReturn("uuid1");
when(dataSetDef.getName()).thenReturn("name1");
when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.BEAN);
when(dataSetDef.isAllColumnsEnabled()).thenReturn(false);
presenter.acceptableValues = buildAcceptableValues();
presenter.setValue(dataSetDef);
verify(dataSetDef, times(0)).setColumns(any(List.class));
verify(dataSetDef, times(0)).setAllColumnsEnabled(anyBoolean());
verify(columnListEditor, times(1)).setProviderType(DataSetProviderType.BEAN);
verify(columnListEditor, times(0)).onValueUnRestricted(anyString());
verify(columnListEditor, times(0)).onValueRestricted(anyString());
verify(columnListEditor, times(0)).setAcceptableValues(any(List.class));
}
@Test
public void testSetValueWithNotAllColumns() {
final DataSetDef dataSetDef = mock(DataSetDef.class);
when(dataSetDef.getUUID()).thenReturn("uuid1");
when(dataSetDef.getName()).thenReturn("name1");
when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.SQL);
when(dataSetDef.isAllColumnsEnabled()).thenReturn(false);
presenter.acceptableValues = buildAcceptableValues();
presenter.setValue(dataSetDef);
verify(dataSetDef, times(0)).setColumns(any(List.class));
verify(dataSetDef, times(0)).setAllColumnsEnabled(anyBoolean());
verify(columnListEditor, times(1)).setProviderType(any(DataSetProviderType.class));
verify(columnListEditor, times(0)).onValueUnRestricted(anyString());
verify(columnListEditor, times(0)).onValueRestricted(anyString());
verify(columnListEditor, times(0)).setAcceptableValues(any(List.class));
}
@Test
public void testSetValueWithAllColumns() {
final DataSetDef dataSetDef = mock(DataSetDef.class);
when(dataSetDef.getUUID()).thenReturn("uuid1");
when(dataSetDef.getName()).thenReturn("name1");
when(dataSetDef.getProvider()).thenReturn(DataSetProviderType.SQL);
when(dataSetDef.isAllColumnsEnabled()).thenReturn(true);
presenter.acceptableValues = buildAcceptableValues();
presenter.setValue(dataSetDef);
verify(dataSetDef, times(1)).setColumns(any(List.class));
verify(dataSetDef, times(1)).setAllColumnsEnabled(false);
verify(columnListEditor, times(1)).setProviderType(any(DataSetProviderType.class));
verify(columnListEditor, times(0)).onValueUnRestricted(anyString());
verify(columnListEditor, times(0)).onValueRestricted(anyString());
verify(columnListEditor, times(0)).setAcceptableValues(any(List.class));
}
private List<DataColumnDef> buildAcceptableValues() {
final DataColumnDef col1 = mock(DataColumnDef.class);
when(col1.getId()).thenReturn("col1");
when(col1.getColumnType()).thenReturn(ColumnType.LABEL);
final List<DataColumnDef> acceptableValues = new ArrayList<DataColumnDef>();
acceptableValues.add(col1);
return acceptableValues;
}
}