/*
* 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;
import org.dashbuilder.displayer.DisplayerSettings;
import org.dashbuilder.displayer.DisplayerSettingsFactory;
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.dashbuilder.dataset.group.AggregateFunctionType.*;
import static org.mockito.Mockito.*;
import static org.junit.Assert.*;
import static org.dashbuilder.dataset.ExpenseReportsData.*;
import static org.dashbuilder.dataset.Assertions.*;
@RunWith(MockitoJUnitRunner.class)
public class DisplayerLifecycleTest extends AbstractDisplayerTest {
DisplayerSettings settings = DisplayerSettingsFactory.newPieChartSettings()
.uuid("expenses")
.dataset(EXPENSES)
.group(COLUMN_DATE)
.column(COLUMN_DATE)
.column(COLUMN_AMOUNT, COUNT)
.column(COLUMN_AMOUNT, SUM)
.buildSettings();
@Mock
DisplayerListener listener;
@Test
public void testLookup() {
Displayer displayer = displayerLocator.lookupDisplayer(settings);
assertNotNull(displayer);
assertNotNull(displayer.getDataSetHandler());
assertNotNull(displayer.getDisplayerSettings());
assertEquals(displayer.getDisplayerSettings(), settings);
}
@Test
public void testDraw() {
AbstractDisplayer displayer = (AbstractDisplayer) displayerLocator.lookupDisplayer(settings);
AbstractDisplayer.View view = displayer.getView();
displayer.addListener(listener);
assertEquals(displayer.isDrawn(), false);
displayer.draw();
assertEquals(displayer.isDrawn(), true);
verify(view).showLoading();
verify(view).setId("expenses");
verify(listener).onDataLookup(displayer);
verify(listener).onDraw(displayer);
verify(listener, never()).onRedraw(displayer);
assertDataSetValues(displayer.getDataSetHandler().getLastDataSet(), new String[][]{
{"2012", "13.00", "6,126.13"},
{"2013", "11.00", "5,252.96"},
{"2014", "11.00", "4,015.48"},
{"2015", "15.00", "7,336.69"}
}, 0);
}
@Test
public void testRedraw() {
AbstractDisplayer displayer = (AbstractDisplayer) displayerLocator.lookupDisplayer(settings);
AbstractDisplayer.View view = displayer.getView();
displayer.addListener(listener);
displayer.draw();
reset(view);
reset(listener);
assertEquals(displayer.isDrawn(), true);
displayer.redraw();
assertEquals(displayer.isDrawn(), true);
verify(listener).onDataLookup(displayer);
verify(listener).onRedraw(displayer);
verify(listener, never()).onDraw(displayer);
verify(view, never()).showLoading();
assertDataSetValues(displayer.getDataSetHandler().getLastDataSet(), new String[][]{
{"2012", "13.00", "6,126.13"},
{"2013", "11.00", "5,252.96"},
{"2014", "11.00", "4,015.48"},
{"2015", "15.00", "7,336.69"}
}, 0);
}
@Test
public void testClose() {
AbstractDisplayer displayer = (AbstractDisplayer) displayerLocator.lookupDisplayer(settings);
AbstractDisplayer.View view = displayer.getView();
displayer.addListener(listener);
displayer.close();
verify(view).clear();
verify(listener).onClose(displayer);
}
}