/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.dashbuilder.displayer.client.widgets; import java.util.Arrays; import javax.enterprise.event.Event; import org.dashbuilder.dataset.DataSetLookupConstraints; import org.dashbuilder.dataset.client.DataSetClientServices; import org.dashbuilder.dataset.uuid.UUIDGenerator; import org.dashbuilder.displayer.DisplayerConstraints; import org.dashbuilder.displayer.DisplayerSettings; import org.dashbuilder.displayer.DisplayerSubType; import org.dashbuilder.displayer.DisplayerType; import org.dashbuilder.displayer.client.Displayer; import org.dashbuilder.displayer.client.DisplayerLocator; import org.dashbuilder.displayer.client.events.DisplayerEditorClosedEvent; import org.dashbuilder.displayer.client.events.DisplayerEditorSavedEvent; import org.dashbuilder.displayer.client.prototypes.DisplayerPrototypes; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class DisplayerEditorTest { @Mock DisplayerEditor.View view; @Mock DataSetClientServices clientServices; @Mock DisplayerLocator displayerLocator; @Mock DisplayerTypeSelector typeSelector; @Mock DataSetLookupEditor lookupEditor; @Mock DisplayerSettingsEditor settingsEditor; @Mock DisplayerEditorStatus editorStatus; @Mock Event<DisplayerEditorSavedEvent> saveEvent; @Mock Event<DisplayerEditorClosedEvent> closeEvent; @Mock DisplayerSettings displayerSettings; @Mock DisplayerSettings tableSettings; @Mock Displayer displayer; @Mock DisplayerHtmlEditor displayerHtmlEditor; @Mock Displayer tableDisplayer; @Mock UUIDGenerator uuidGenerator; @Mock DisplayerPrototypes displayerPrototypes; @Mock DisplayerConstraints displayerConstraints; @Mock DataSetLookupConstraints lookupConstraints; DisplayerEditor presenter = null; @Before public void init() throws Exception { when(displayerPrototypes.getProto(any(DisplayerType.class))).thenReturn(displayerSettings); when(displayerSettings.cloneInstance()).thenReturn(tableSettings); when(displayerLocator.lookupDisplayer(displayerSettings)).thenReturn(displayer); when(displayerLocator.lookupDisplayer(tableSettings)).thenReturn(tableDisplayer); when(displayer.getDisplayerConstraints()).thenReturn(displayerConstraints); when(displayerConstraints.getDataSetLookupConstraints()).thenReturn(lookupConstraints); presenter = new DisplayerEditor(view, clientServices, displayerLocator, displayerPrototypes, typeSelector, lookupEditor, settingsEditor, editorStatus, displayerHtmlEditor, saveEvent, closeEvent); } @Test public void testBrandNewDisplayer() { when(view.getBrandNewDisplayerTitle()).thenReturn("New displayer"); presenter.init(null); assertEquals(presenter.isBrandNewDisplayer(), true); verify(displayerSettings).setTitle("New displayer"); verify(displayerPrototypes).getProto(any(DisplayerType.class)); verify(displayerLocator).lookupDisplayer(displayerSettings); verify(displayer).draw(); verify(typeSelector).init(any(DisplayerType.class), any(DisplayerSubType.class)); verify(lookupEditor).init(lookupConstraints, null); verify(settingsEditor).init(displayer); verify(view).showDisplayer(displayer); } @Test public void testNavigation() { presenter.setTypeSelectorEnabled(true); presenter.setDataSetLookupConfEnabled(true); presenter.setDisplaySettingsEnabled(true); // Default when(editorStatus.getSelectedOption(anyString())).thenReturn(-1); presenter.init(null); verify(view).gotoTypeSelection(typeSelector); // Type selector when(editorStatus.getSelectedOption(anyString())).thenReturn(0); presenter.init(null); verify(view).gotoTypeSelection(typeSelector); // Data lookup conf when(editorStatus.getSelectedOption(anyString())).thenReturn(1); presenter.init(null); verify(view).gotoDataSetLookupConf(lookupEditor); // Display settings when(editorStatus.getSelectedOption(anyString())).thenReturn(2); presenter.init(null); verify(view).gotoDisplaySettings(settingsEditor); } @Test public void testTypeSelectorDisabled() { presenter.setTypeSelectorEnabled(false); presenter.setDataSetLookupConfEnabled(true); presenter.setDisplaySettingsEnabled(true); when(editorStatus.getSelectedOption(anyString())).thenReturn(-1); presenter.init(null); verify(view).gotoDataSetLookupConf(lookupEditor); verify(view, never()).gotoTypeSelection(typeSelector); verify(view, never()).gotoDisplaySettings(settingsEditor); } @Test public void testDataLookupConfDisabled() { presenter.setTypeSelectorEnabled(false); presenter.setDataSetLookupConfEnabled(false); presenter.setDisplaySettingsEnabled(true); when(editorStatus.getSelectedOption(anyString())).thenReturn(-1); presenter.init(null); verify(view, never()).gotoDataSetLookupConf(lookupEditor); verify(view, never()).gotoTypeSelection(typeSelector); verify(view).gotoDisplaySettings(settingsEditor); } @Test public void testTableModeAvailable() { for (DisplayerType type : Arrays.asList( DisplayerType.BARCHART, DisplayerType.LINECHART, DisplayerType.PIECHART, DisplayerType.AREACHART, DisplayerType.BUBBLECHART, DisplayerType.METERCHART, DisplayerType.METRIC, DisplayerType.MAP)) { reset(view); when(displayerSettings.getType()).thenReturn(type); presenter.init(null); presenter.gotoDataSetLookupConf(); verify(view).setTableDisplayModeEnabled(true); } } @Test public void testTableModeNotAvailable() { when(displayerSettings.getType()).thenReturn(DisplayerType.TABLE); presenter.init(null); presenter.gotoDataSetLookupConf(); verify(view).setTableDisplayModeEnabled(false); verify(view, never()).setTableDisplayModeEnabled(true); } @Test public void testTableMode() { when(view.isTableDisplayModeOn()).thenReturn(true); presenter.init(null); verify(tableDisplayer).draw(); verify(view).showDisplayer(tableDisplayer); } }