/*! * 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.workspace; import com.google.gwt.core.client.JsArrayString; import com.google.gwtmockito.GwtMockitoTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.pentaho.mantle.client.dialogs.scheduling.ScheduleEditor; import static org.junit.Assert.*; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doCallRealMethod; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith( GwtMockitoTestRunner.class ) public class JsJobTriggerTest { private JsJobTrigger jsJobTrigger; @Before public void setUp() throws Exception { jsJobTrigger = mock( JsJobTrigger.class ); } @Test public void testConvertJsArrayStringToIntArray() throws Exception { doCallRealMethod().when( jsJobTrigger ).convertJsArrayStringToIntArray( any( JsArrayString.class ) ); assertNull( jsJobTrigger.convertJsArrayStringToIntArray( null ) ); final JsArrayString jsArrayString = mock( JsArrayString.class ); final int length = 5; when( jsArrayString.length() ).thenReturn( length ); when( jsArrayString.toString() ).thenReturn( "1,2,3,4,5" ); final int[] ints = jsJobTrigger.convertJsArrayStringToIntArray( jsArrayString ); assertEquals( length, ints.length ); assertEquals( 1, ints[0] ); assertEquals( 2, ints[1] ); assertEquals( 3, ints[2] ); assertEquals( 4, ints[3] ); assertEquals( 5, ints[4] ); } @Test public void testOldGetScheduleType() throws Exception { doCallRealMethod().when( jsJobTrigger ).oldGetScheduleType(); when( jsJobTrigger.getType() ).thenReturn( "complexJobTrigger" ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] { 1 } ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] {} ); assertEquals( "YEARLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] { 1 } ); assertEquals( "MONTHLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.isQualifiedDayOfWeekRecurrence() ).thenReturn( true ); assertEquals( "MONTHLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.isQualifiedDayOfWeekRecurrence() ).thenReturn( false ); when( jsJobTrigger.getDayOfWeekRecurrences() ).thenReturn( new int[2] ); assertEquals( "WEEKLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getDayOfWeekRecurrences() ).thenReturn( new int[0] ); assertNull( jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getType() ).thenReturn( "simpleJobTrigger" ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 86400 - 1 ); assertEquals( "HOURLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 604800 - 1 ); assertEquals( "DAILY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 604800 ); assertEquals( "WEEKLY", jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 604800 + 1 ); assertNull( jsJobTrigger.oldGetScheduleType() ); when( jsJobTrigger.getType() ).thenReturn( "" ); assertNull( jsJobTrigger.oldGetScheduleType() ); } @Test public void testCalcScheduleType() throws Exception { doCallRealMethod().when( jsJobTrigger ).calcScheduleType(); when( jsJobTrigger.getType() ).thenReturn( "complexJobTrigger" ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] { 1 } ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] {} ); assertEquals( ScheduleEditor.ScheduleType.YEARLY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] { 1 } ); assertEquals( ScheduleEditor.ScheduleType.MONTHLY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getMonthlyRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.getDayOfMonthRecurrences() ).thenReturn( new int[] {} ); when( jsJobTrigger.isQualifiedDayOfWeekRecurrence() ).thenReturn( true ); assertEquals( ScheduleEditor.ScheduleType.MONTHLY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.isQualifiedDayOfWeekRecurrence() ).thenReturn( false ); when( jsJobTrigger.isWorkDaysInWeek() ).thenReturn( true ); assertEquals( ScheduleEditor.ScheduleType.DAILY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.isWorkDaysInWeek() ).thenReturn( false ); assertEquals( ScheduleEditor.ScheduleType.WEEKLY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getType() ).thenReturn( "simpleJobTrigger" ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 0 ); assertEquals( ScheduleEditor.ScheduleType.RUN_ONCE, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 604800 ); assertEquals( ScheduleEditor.ScheduleType.WEEKLY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 86400 ); assertEquals( ScheduleEditor.ScheduleType.DAILY, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 3600 ); assertEquals( ScheduleEditor.ScheduleType.HOURS, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 60 ); assertEquals( ScheduleEditor.ScheduleType.MINUTES, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getRepeatInterval() ).thenReturn( 5 ); assertEquals( ScheduleEditor.ScheduleType.SECONDS, jsJobTrigger.calcScheduleType() ); when( jsJobTrigger.getType() ).thenReturn( "" ); assertEquals( ScheduleEditor.ScheduleType.CRON, jsJobTrigger.calcScheduleType() ); } @Test public void testIsWorkDaysInWeek() throws Exception { doCallRealMethod().when( jsJobTrigger ).isWorkDaysInWeek(); when( jsJobTrigger.getDayOfWeekRecurrences() ).thenReturn( new int[6] ); assertFalse( jsJobTrigger.isWorkDaysInWeek() ); when( jsJobTrigger.getDayOfWeekRecurrences() ).thenReturn( new int[] { 1, 2, 3, 4, 5 } ); assertFalse( jsJobTrigger.isWorkDaysInWeek() ); when( jsJobTrigger.getDayOfWeekRecurrences() ).thenReturn( new int[] { 2, 3, 4, 5, 6 } ); assertTrue( jsJobTrigger.isWorkDaysInWeek() ); } }