package org.jenkinsci.plugins.parameterizedschedular;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.GregorianCalendar;
import java.util.Map;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
import com.google.common.collect.Maps;
@RunWith(MockitoJUnitRunner.class)
public class ParameterizedCronTabListTest {
@Mock
private ParameterizedCronTab mockParameterizedCronTab;
@Mock
private ParameterizedCronTab mockParameterizedCronTabToo;
@Test
public void create() throws Exception {
ParameterizedCronTabList testObject = ParameterizedCronTabList.create("* * * * *%foo=bar");
assertTrue(testObject.checkSanity(), testObject.checkSanity().startsWith("Do you really mean \"every minute\""));
ParameterizedCronTab actualCronTab = testObject.check(new GregorianCalendar());
assertTrue(actualCronTab != null);
Map<String, String> expected = Maps.newHashMap();
expected.put("foo", "bar");
assertEquals(expected, actualCronTab.getParameterValues());
}
@Test
public void check_Delegates_ReturnsNull() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
GregorianCalendar testCalendar = new GregorianCalendar();
assertNull(testObject.check(testCalendar));
Mockito.verify(mockParameterizedCronTab).check(testCalendar);
Mockito.verify(mockParameterizedCronTabToo).check(testCalendar);
}
@Test
public void check_Delegates_ReturnsSame_EarlyExit() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
GregorianCalendar testCalendar = new GregorianCalendar();
Mockito.when(mockParameterizedCronTab.check(testCalendar)).thenReturn(true);
assertSame(mockParameterizedCronTab, testObject.check(testCalendar));
Mockito.verifyZeroInteractions(mockParameterizedCronTabToo);
}
@Test
public void check_Delegates_ReturnsSame() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
GregorianCalendar testCalendar = new GregorianCalendar();
Mockito.when(mockParameterizedCronTabToo.check(testCalendar)).thenReturn(true);
assertSame(mockParameterizedCronTabToo, testObject.check(testCalendar));
}
@Test
public void checkSanity_Delegates_ReturnsNull() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
assertNull(testObject.checkSanity());
Mockito.verify(mockParameterizedCronTab).checkSanity();
Mockito.verify(mockParameterizedCronTabToo).checkSanity();
}
@Test
public void checkSanity_Delegates_ReturnsSame_EarlyExit() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
String sanityValue = "foo";
Mockito.when(mockParameterizedCronTab.checkSanity()).thenReturn(sanityValue);
assertSame(sanityValue, testObject.checkSanity());
Mockito.verifyZeroInteractions(mockParameterizedCronTabToo);
}
@Test
public void checkSanity_Delegates_ReturnsSame() {
ParameterizedCronTabList testObject = new ParameterizedCronTabList(Arrays.asList(mockParameterizedCronTab,
mockParameterizedCronTabToo));
String sanityValue = "foo";
Mockito.when(mockParameterizedCronTabToo.checkSanity()).thenReturn(sanityValue);
assertSame(sanityValue, testObject.checkSanity());
}
}