/* * 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.filter; import org.dashbuilder.dataset.date.Month; import org.dashbuilder.dataset.date.TimeFrame; import org.dashbuilder.dataset.group.DateIntervalType; import org.jboss.errai.ioc.client.container.SyncBeanDef; import org.jboss.errai.ioc.client.container.SyncBeanManager; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.uberfire.mvp.Command; import static org.junit.Assert.*; import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) public class TimeFrameEditorTest { @Mock SyncBeanManager beanManager; @Mock Command changeCommand; @Mock TimeFrameEditor.View timeFrameView; @Mock TimeAmountEditor.View timeAmountView; @Mock TimeInstantEditor.View timeInstantView; TimeAmountEditor fromAmountEditor; TimeAmountEditor toAmountEditor; TimeInstantEditor fromInstantEditor; TimeInstantEditor toInstantEditor; TimeFrameEditor timeFrameEditor; public static final TimeFrame TEN_DAYS = TimeFrame.parse("begin[year March] till 10day"); public static final TimeFrame LAST_DAY = TimeFrame.parse("now -1day till now"); public static final TimeFrame CURRENT_YEAR = TimeFrame.parse("begin[year] till end[year]"); public static final TimeFrame UNDEFINED = null; @Before public void init() { fromAmountEditor = new TimeAmountEditor(timeAmountView); toAmountEditor = new TimeAmountEditor(timeAmountView); fromInstantEditor = new TimeInstantEditor(timeInstantView, fromAmountEditor); toInstantEditor = new TimeInstantEditor(timeInstantView, toAmountEditor); timeFrameEditor = new TimeFrameEditor(timeFrameView, beanManager); SyncBeanDef tieBeanDef = mock(SyncBeanDef.class); when(beanManager.lookupBean(TimeInstantEditor.class)).thenReturn(tieBeanDef); when(tieBeanDef.newInstance()).thenReturn(fromInstantEditor, toInstantEditor); } @Test public void testViewInitialization() { timeFrameEditor.init(TEN_DAYS, changeCommand); assertEquals(timeFrameView, timeFrameEditor.view); verify(timeFrameView).init(timeFrameEditor); verify(timeFrameView).clearFirstMonthSelector(); verify(timeFrameView, times(Month.values().length)).addFirstMonthItem(any(Month.class)); verify(timeFrameView).setSelectedFirstMonthIndex(Month.MARCH.getIndex() - 1); } @Test public void testNullInitialization() { timeFrameEditor.init(UNDEFINED, changeCommand); assertEquals(timeFrameView, timeFrameEditor.view); verify(timeFrameView).init(timeFrameEditor); verify(timeFrameView).clearFirstMonthSelector(); verify(timeFrameView, times(Month.values().length)).addFirstMonthItem(any(Month.class)); verify(timeFrameView).setSelectedFirstMonthIndex(Month.JANUARY.getIndex() - 1); } @Test public void testChangeTimeAmountQuantity() { TimeFrame timeFrame = TimeFrame.parse("now -1year till now"); timeFrameEditor.init(timeFrame, changeCommand); long qb = timeFrame.getFrom().getTimeAmount().getQuantity(); fromAmountEditor.decreaseQuantity(); long qa = timeFrame.getFrom().getTimeAmount().getQuantity(); verify(changeCommand).execute(); assertEquals(qb - 1, qa); } @Test public void testChangeTimeAmountType() { TimeFrame timeFrame = TimeFrame.parse("now -1year till now"); timeFrameEditor.init(timeFrame, changeCommand); when(timeAmountView.getSelectedTypeIndex()).thenReturn(3); fromAmountEditor.changeIntervalType(); DateIntervalType type = timeFrame.getFrom().getTimeAmount().getType(); verify(changeCommand).execute(); assertEquals(type, DateIntervalType.DAY); } @Test public void testChangeTimeInstant() { TimeFrame timeFrame = TimeFrame.parse("now -1year till now"); timeFrameEditor.init(timeFrame, changeCommand); when(timeInstantView.getSelectedIntervalTypeIndex()).thenReturn(3); fromInstantEditor.changeIntervalType(); DateIntervalType type = timeFrame.getFrom().getIntervalType(); verify(changeCommand).execute(); assertEquals(type, DateIntervalType.MONTH); } @Test public void testFirstMonthAvailable() { timeFrameEditor.init(CURRENT_YEAR, changeCommand); assertEquals(timeFrameEditor.isFirstMonthAvailable(), true); } @Test public void testFirstMonthUnavailable() { timeFrameEditor.init(LAST_DAY, changeCommand); assertEquals(timeFrameEditor.isFirstMonthAvailable(), false); } }