package org.dashbuilder.client.widgets.dataset.editor.attributes;
import com.google.gwtmockito.GwtMockitoTestRunner;
import org.dashbuilder.common.client.event.ValueChangeEvent;
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 org.uberfire.mocks.EventSourceMock;
import static org.jgroups.util.Util.assertEquals;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyBoolean;
import static org.mockito.Matchers.anyDouble;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.*;
@RunWith(GwtMockitoTestRunner.class)
public class DataSetDefRefreshIntervalEditorTest {
@Mock EventSourceMock<ValueChangeEvent<String>> valueChangeEvent;
@Mock DataSetDefRefreshIntervalEditor.View view;
private DataSetDefRefreshIntervalEditor presenter;
@Before
public void setup() {
presenter = new DataSetDefRefreshIntervalEditor(view, valueChangeEvent);
}
@Test
public void testInit() {
presenter.init();
verify(view, times(1)).init(presenter);
verify(view, times(6)).addIntervalTypeItem(anyString());
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).setSelectedIntervalType(anyInt());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).setQuantity(anyDouble());
verify(view, times(0)).getQuantity();
verify(view, times(0)).setEnabled(anyBoolean());
}
@Test
public void testAddHelpContent() {
final Placement p = mock(Placement.class);
presenter.addHelpContent("t1", "c1", p);
verify(view, times(1)).addHelpContent("t1", "c1", p);
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
verify(view, times(0)).setSelectedIntervalType(anyInt());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).setQuantity(anyDouble());
verify(view, times(0)).getQuantity();
verify(view, times(0)).setEnabled(anyBoolean());
}
@Test
public void testSetEnabled() {
presenter.setEnabled(true);
verify(view, times(1)).setEnabled(true);
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
verify(view, times(0)).setSelectedIntervalType(anyInt());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).setQuantity(anyDouble());
verify(view, times(0)).getQuantity();
}
@Test
public void testSetDisabled() {
presenter.setEnabled(false);
verify(view, times(1)).setEnabled(false);
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
verify(view, times(0)).setSelectedIntervalType(anyInt());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).setQuantity(anyDouble());
verify(view, times(0)).getQuantity();
}
@Test
public void testSetValue() {
final String value = "1second";
presenter.setValue(value);
verify(view, times(1)).setQuantity(1d);
verify(view, times(1)).setSelectedIntervalType(anyInt());
verify(view, times(0)).setEnabled(anyBoolean());
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).getQuantity();
}
@Test
public void testSetAnotherValue() {
final String value = "10minute";
presenter.setValue(value);
verify(view, times(1)).setQuantity(10d);
verify(view, times(1)).setSelectedIntervalType(anyInt());
verify(view, times(0)).setEnabled(anyBoolean());
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
verify(view, times(0)).getSelectedIntervalTypeIndex();
verify(view, times(0)).getQuantity();
}
@Test
public void testGetValue() {
when(view.getQuantity()).thenReturn(1d);
when(view.getSelectedIntervalTypeIndex()).thenReturn(0);
final String value = presenter.getValue();
assertEquals("1 second", value);
verify(view, times(1)).getQuantity();
verify(view, times(1)).getSelectedIntervalTypeIndex();
verify(view, times(0)).setQuantity(10d);
verify(view, times(0)).setSelectedIntervalType(anyInt());
verify(view, times(0)).setEnabled(anyBoolean());
verify(view, times(0)).addHelpContent(anyString(), anyString(), any(Placement.class));
verify(view, times(0)).init(presenter);
verify(view, times(0)).addIntervalTypeItem(anyString());
}
}