/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2015 Pentaho Corporation.. All rights reserved. */ package org.pentaho.mantle.client.dialogs.scheduling; import com.google.gwtmockito.GwtMockitoTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.pentaho.gwt.widgets.client.controls.DateRangeEditor; import org.pentaho.gwt.widgets.client.controls.TimePicker; import org.pentaho.gwt.widgets.client.utils.CronParser; import org.pentaho.gwt.widgets.client.utils.TimeUtil; import java.util.Date; import java.util.LinkedList; import java.util.List; import java.util.Map; import static org.junit.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; @RunWith( GwtMockitoTestRunner.class ) public class RecurrenceEditorTest { private RecurrenceEditor recurrenceEditor; @Before public void setUp() throws Exception { recurrenceEditor = mock( RecurrenceEditor.class ); recurrenceEditor.startTimePicker = mock( TimePicker.class ); } @Test public void testReset() throws Exception { doCallRealMethod().when( recurrenceEditor ).reset( any( Date.class ) ); recurrenceEditor.dateRangeEditor = mock( DateRangeEditor.class ); recurrenceEditor.secondlyEditor = mock( RecurrenceEditor.SecondlyRecurrenceEditor.class ); recurrenceEditor.minutelyEditor = mock( RecurrenceEditor.MinutelyRecurrenceEditor.class ); recurrenceEditor.hourlyEditor = mock( RecurrenceEditor.HourlyRecurrenceEditor.class ); recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); recurrenceEditor.weeklyEditor = mock( RecurrenceEditor.WeeklyRecurrenceEditor.class ); recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); final Date date = new Date(); recurrenceEditor.reset( date ); verify( recurrenceEditor.startTimePicker ).setHour( "12" ); verify( recurrenceEditor.startTimePicker ).setMinute( "00" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.AM ); verify( recurrenceEditor.dateRangeEditor ).reset( date ); verify( recurrenceEditor.secondlyEditor ).reset(); verify( recurrenceEditor.minutelyEditor ).reset(); verify( recurrenceEditor.hourlyEditor ).reset(); verify( recurrenceEditor.dailyEditor ).reset(); verify( recurrenceEditor.weeklyEditor ).reset(); verify( recurrenceEditor.monthlyEditor ).reset(); verify( recurrenceEditor.yearlyEditor ).reset(); } @Test public void testInititalizeWithRecurrenceString_EveryWeekday() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.EveryWeekday + " 0 33 18"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.DAILY ); verify( recurrenceEditor.dailyEditor ).setEveryWeekday(); } @Test public void testInititalizeWithRecurrenceString_WeeklyOn() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.weeklyEditor = mock( RecurrenceEditor.WeeklyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.WeeklyOn + " 0 33 18 5"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.WEEKLY ); verify( recurrenceEditor.weeklyEditor ).setCheckedDaysAsString( "5", RecurrenceEditor.VALUE_OF_SUNDAY ); } @Test public void testInititalizeWithRecurrenceString_DayNOfMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.DayNOfMonth + " 0 33 18 5"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.MONTHLY ); verify( recurrenceEditor.monthlyEditor ).setDayNOfMonth(); verify( recurrenceEditor.monthlyEditor ).setDayOfMonth( "5" ); } @Test public void testInititalizeWithRecurrenceString_NthDayNameOfMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.NthDayNameOfMonth + " 0 33 18 5 1"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.MONTHLY ); verify( recurrenceEditor.monthlyEditor ).setNthDayNameOfMonth(); verify( recurrenceEditor.monthlyEditor ).setWeekOfMonth( TimeUtil.WeekOfMonth.FIRST ); verify( recurrenceEditor.monthlyEditor ).setDayOfWeek( TimeUtil.DayOfWeek.THU ); } @Test public void testInititalizeWithRecurrenceString_LastDayNameOfMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.LastDayNameOfMonth + " 0 33 18 5"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.MONTHLY ); verify( recurrenceEditor.monthlyEditor ).setNthDayNameOfMonth(); verify( recurrenceEditor.monthlyEditor ).setWeekOfMonth( TimeUtil.WeekOfMonth.LAST ); verify( recurrenceEditor.monthlyEditor ).setDayOfWeek( TimeUtil.DayOfWeek.THU ); } @Test public void testInititalizeWithRecurrenceString_EveryMonthNameN() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.EveryMonthNameN + " 0 33 18 5 1"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.YEARLY ); verify( recurrenceEditor.yearlyEditor ).setEveryMonthOnNthDay(); verify( recurrenceEditor.yearlyEditor ).setDayOfMonth( "5" ); verify( recurrenceEditor.yearlyEditor ).setMonthOfYear0( TimeUtil.MonthOfYear.JAN ); } @Test public void testInititalizeWithRecurrenceString_NthDayNameOfMonthName() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.NthDayNameOfMonthName + " 0 33 18 5 1 2"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.YEARLY ); verify( recurrenceEditor.yearlyEditor ).setNthDayNameOfMonthName(); verify( recurrenceEditor.yearlyEditor ).setMonthOfYear1( TimeUtil.MonthOfYear.FEB ); verify( recurrenceEditor.yearlyEditor ).setWeekOfMonth( TimeUtil.WeekOfMonth.FIRST ); verify( recurrenceEditor.yearlyEditor ).setDayOfWeek( TimeUtil.DayOfWeek.THU ); } @Test public void testInititalizeWithRecurrenceString_LastDayNameOfMonthName() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRecurrenceString( anyString() ); recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); final String recurrenceStr = CronParser.RecurrenceType.LastDayNameOfMonthName + " 0 33 18 5 1"; recurrenceEditor.inititalizeWithRecurrenceString( recurrenceStr ); verify( recurrenceEditor.startTimePicker ).setHour( "6" ); verify( recurrenceEditor.startTimePicker ).setMinute( "33" ); verify( recurrenceEditor.startTimePicker ).setTimeOfDay( TimeUtil.TimeOfDay.PM ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.YEARLY ); verify( recurrenceEditor.yearlyEditor ).setNthDayNameOfMonthName(); verify( recurrenceEditor.yearlyEditor ).setMonthOfYear1( TimeUtil.MonthOfYear.JAN ); verify( recurrenceEditor.yearlyEditor ).setWeekOfMonth( TimeUtil.WeekOfMonth.LAST ); verify( recurrenceEditor.yearlyEditor ).setDayOfWeek( TimeUtil.DayOfWeek.THU ); } @Test public void testInititalizeWithRepeatInSecs() throws Exception { doCallRealMethod().when( recurrenceEditor ).inititalizeWithRepeatInSecs( anyInt() ); recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); recurrenceEditor.temporalPanelMap = mock( Map.class ); final int count = 2; recurrenceEditor.inititalizeWithRepeatInSecs( count * TimeUtil.HOURS_IN_DAY * TimeUtil.MINUTES_IN_HOUR * TimeUtil.SECONDS_IN_MINUTE ); verify( recurrenceEditor.dailyEditor ).setRepeatValue( String.valueOf( count ) ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.DAILY ); final RecurrenceEditor.SimpleRecurrencePanel recurrencePanel = mock( RecurrenceEditor.SimpleRecurrencePanel.class ); when( recurrenceEditor.temporalPanelMap.get( RecurrenceEditor.TemporalValue.HOURS ) ). thenReturn( recurrencePanel ); recurrenceEditor.inititalizeWithRepeatInSecs( count * TimeUtil.MINUTES_IN_HOUR * TimeUtil.SECONDS_IN_MINUTE ); verify( recurrencePanel ).setValue( String.valueOf( count ) ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.HOURS ); when( recurrenceEditor.temporalPanelMap.get( RecurrenceEditor.TemporalValue.MINUTES ) ). thenReturn( recurrencePanel ); recurrenceEditor.inititalizeWithRepeatInSecs( count * TimeUtil.SECONDS_IN_MINUTE ); verify( recurrencePanel, times( 2 ) ).setValue( String.valueOf( count ) ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.MINUTES ); when( recurrenceEditor.temporalPanelMap.get( RecurrenceEditor.TemporalValue.SECONDS ) ). thenReturn( recurrencePanel ); recurrenceEditor.inititalizeWithRepeatInSecs( count ); verify( recurrencePanel, times( 3 ) ).setValue( String.valueOf( count ) ); verify( recurrenceEditor ).setTemporalState( RecurrenceEditor.TemporalValue.SECONDS ); } @Test public void testGetRepeatInSecs() throws Exception { doCallRealMethod().when( recurrenceEditor ).getRepeatInSecs(); recurrenceEditor.secondlyEditor = mock( RecurrenceEditor.SecondlyRecurrenceEditor.class ); final Long secondlyEditorValue = 22222l; when( recurrenceEditor.secondlyEditor.getValue() ).thenReturn( secondlyEditorValue.toString() ); recurrenceEditor.minutelyEditor = mock( RecurrenceEditor.MinutelyRecurrenceEditor.class ); final Long minutelyEditorValue = 333333l; when( recurrenceEditor.minutelyEditor.getValue() ).thenReturn( minutelyEditorValue.toString() ); recurrenceEditor.hourlyEditor = mock( RecurrenceEditor.HourlyRecurrenceEditor.class ); final Long hourlyEditorValue = 4444444l; when( recurrenceEditor.hourlyEditor.getValue() ).thenReturn( hourlyEditorValue.toString() ); recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); final Long dailyEditorValue = 55555555l; when( recurrenceEditor.dailyEditor.getRepeatValue() ).thenReturn( dailyEditorValue.toString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.WEEKLY; assertNull( recurrenceEditor.getRepeatInSecs() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; assertNull( recurrenceEditor.getRepeatInSecs() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; assertNull( recurrenceEditor.getRepeatInSecs() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.SECONDS; assertEquals( secondlyEditorValue, recurrenceEditor.getRepeatInSecs() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MINUTES; assertEquals( 19999980l, recurrenceEditor.getRepeatInSecs().longValue() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.HOURS; assertEquals( 15999998400l, recurrenceEditor.getRepeatInSecs().longValue() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.DAILY; assertEquals( 4799999952000l, recurrenceEditor.getRepeatInSecs().longValue() ); recurrenceEditor.temporalState = null; try { recurrenceEditor.getRepeatInSecs(); fail(); } catch ( RuntimeException e ) { // expected } } @Test public void testGetCronString() throws Exception { doCallRealMethod().when( recurrenceEditor ).getCronString(); final String dailyCronString = "dailyCronString"; when( recurrenceEditor.getDailyCronString() ).thenReturn( dailyCronString ); final String weeklyCronString = "weeklyCronString"; when( recurrenceEditor.getWeeklyCronString() ).thenReturn( weeklyCronString ); final String monthlyCronString = "monthlyCronString"; when( recurrenceEditor.getMonthlyCronString() ).thenReturn( monthlyCronString ); final String yearlyCronString = "yearlyCronString"; when( recurrenceEditor.getYearlyCronString() ).thenReturn( yearlyCronString ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.SECONDS; assertNull( recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MINUTES; assertNull( recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.HOURS; assertNull( recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.DAILY; assertEquals( dailyCronString, recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.WEEKLY; assertEquals( weeklyCronString, recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; assertEquals( monthlyCronString, recurrenceEditor.getCronString() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; assertEquals( yearlyCronString, recurrenceEditor.getCronString() ); } @Test public void testIsEveryNDays() throws Exception { doCallRealMethod().when( recurrenceEditor ).isEveryNDays(); recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.WEEKLY; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.HOURS; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MINUTES; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.SECONDS; assertFalse( recurrenceEditor.isEveryNDays() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.DAILY; when( recurrenceEditor.dailyEditor.isEveryNDays() ).thenReturn( false ); assertFalse( recurrenceEditor.isEveryNDays() ); when( recurrenceEditor.dailyEditor.isEveryNDays() ).thenReturn( true ); assertTrue( recurrenceEditor.isEveryNDays() ); } @Test public void testGetSelectedMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).getSelectedMonth(); recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); final TimeUtil.MonthOfYear monthOfYear1 = TimeUtil.MonthOfYear.APR; when( recurrenceEditor.yearlyEditor.getMonthOfYear1() ).thenReturn( monthOfYear1 ); final TimeUtil.MonthOfYear monthOfYear0 = TimeUtil.MonthOfYear.NOV; when( recurrenceEditor.yearlyEditor.getMonthOfYear0() ).thenReturn( monthOfYear0 ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.DAILY; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.WEEKLY; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.HOURS; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MINUTES; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.SECONDS; assertNull( recurrenceEditor.getSelectedMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; when( recurrenceEditor.yearlyEditor.isNthDayNameOfMonthName() ).thenReturn( true ); assertEquals( monthOfYear1, recurrenceEditor.getSelectedMonth() ); when( recurrenceEditor.yearlyEditor.isNthDayNameOfMonthName() ).thenReturn( false ); assertNull( recurrenceEditor.getSelectedMonth() ); when( recurrenceEditor.yearlyEditor.isEveryMonthOnNthDay() ).thenReturn( true ); assertEquals( monthOfYear0, recurrenceEditor.getSelectedMonth() ); } @Test public void testGetSelectedDaysOfWeek() throws Exception { doCallRealMethod().when( recurrenceEditor ).getSelectedDaysOfWeek(); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.DAILY; recurrenceEditor.dailyEditor = mock( RecurrenceEditor.DailyRecurrenceEditor.class ); when( recurrenceEditor.dailyEditor.isEveryNDays() ).thenReturn( false ); List<TimeUtil.DayOfWeek> selectedDaysOfWeek = recurrenceEditor.getSelectedDaysOfWeek(); assertEquals( 5, selectedDaysOfWeek.size() ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.MON ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.TUE ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.WED ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.THU ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.FRI ) ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.WEEKLY; recurrenceEditor.weeklyEditor = mock( RecurrenceEditor.WeeklyRecurrenceEditor.class ); when( recurrenceEditor.weeklyEditor.getCheckedDays() ).thenReturn( new LinkedList<TimeUtil.DayOfWeek>() { { add( TimeUtil.DayOfWeek.MON ); add( TimeUtil.DayOfWeek.FRI ); add( TimeUtil.DayOfWeek.SUN ); } } ); selectedDaysOfWeek = recurrenceEditor.getSelectedDaysOfWeek(); assertEquals( 3, selectedDaysOfWeek.size() ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.MON ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.FRI ) ); assertTrue( selectedDaysOfWeek.contains( TimeUtil.DayOfWeek.SUN ) ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); when( recurrenceEditor.monthlyEditor.isNthDayNameOfMonth() ).thenReturn( true ); final TimeUtil.DayOfWeek dayOfWeek = TimeUtil.DayOfWeek.SAT; when( recurrenceEditor.monthlyEditor.getDayOfWeek() ).thenReturn( dayOfWeek ); selectedDaysOfWeek = recurrenceEditor.getSelectedDaysOfWeek(); assertEquals( 1, selectedDaysOfWeek.size() ); assertTrue( selectedDaysOfWeek.contains( dayOfWeek ) ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); when( recurrenceEditor.yearlyEditor.isNthDayNameOfMonthName() ).thenReturn( true ); when( recurrenceEditor.yearlyEditor.getDayOfWeek() ).thenReturn( dayOfWeek ); selectedDaysOfWeek = recurrenceEditor.getSelectedDaysOfWeek(); assertEquals( 1, selectedDaysOfWeek.size() ); assertTrue( selectedDaysOfWeek.contains( dayOfWeek ) ); } @Test public void testGetSelectedWeekOfMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).getSelectedWeekOfMonth(); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); when( recurrenceEditor.monthlyEditor.isNthDayNameOfMonth() ).thenReturn( true ); final TimeUtil.WeekOfMonth weekOfMonth = TimeUtil.WeekOfMonth.SECOND; when( recurrenceEditor.monthlyEditor.getWeekOfMonth() ).thenReturn( weekOfMonth ); assertEquals( weekOfMonth, recurrenceEditor.getSelectedWeekOfMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); when( recurrenceEditor.yearlyEditor.isNthDayNameOfMonthName() ).thenReturn( true ); when( recurrenceEditor.yearlyEditor.getWeekOfMonth() ).thenReturn( weekOfMonth ); assertEquals( weekOfMonth, recurrenceEditor.getSelectedWeekOfMonth() ); } @Test public void testGetSelectedDayOfMonth() throws Exception { doCallRealMethod().when( recurrenceEditor ).getSelectedDayOfMonth(); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.MONTHLY; recurrenceEditor.monthlyEditor = mock( RecurrenceEditor.MonthlyRecurrenceEditor.class ); when( recurrenceEditor.monthlyEditor.isDayNOfMonth() ).thenReturn( true ); final Integer dayOfMonth = 18; when( recurrenceEditor.monthlyEditor.getDayOfMonth() ).thenReturn( dayOfMonth.toString() ); assertEquals( dayOfMonth, recurrenceEditor.getSelectedDayOfMonth() ); recurrenceEditor.temporalState = RecurrenceEditor.TemporalValue.YEARLY; recurrenceEditor.yearlyEditor = mock( RecurrenceEditor.YearlyRecurrenceEditor.class ); when( recurrenceEditor.yearlyEditor.isEveryMonthOnNthDay() ).thenReturn( true ); when( recurrenceEditor.yearlyEditor.getDayOfMonth() ).thenReturn( dayOfMonth.toString() ); assertEquals( dayOfMonth, recurrenceEditor.getSelectedDayOfMonth() ); } }