/******************************************************************************** | |
* Copyright (c) 2018 Mettenmeier GmbH | |
* | |
* See the NOTICE file(s) distributed with this work for additional | |
* information regarding copyright ownership. | |
* | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License 2.0 which is available at | |
* http://www.eclipse.org/legal/epl-2.0 | |
* | |
* SPDX-License-Identifier: EPL-2.0 | |
********************************************************************************/ | |
package org.eclipse.openk.sp.controller.planning; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertFalse; | |
import static org.junit.Assert.assertNotNull; | |
import static org.junit.Assert.assertNull; | |
import static org.junit.Assert.assertTrue; | |
import static org.mockito.Mockito.when; | |
import java.util.ArrayList; | |
import java.util.Date; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import org.apache.log4j.Logger; | |
import org.eclipse.openk.sp.controller.UserController; | |
import org.eclipse.openk.sp.controller.validation.ValidationController; | |
import org.eclipse.openk.sp.db.dao.CalendarRepository; | |
import org.eclipse.openk.sp.db.dao.StandbyDurationRepository; | |
import org.eclipse.openk.sp.db.dao.StandbyGroupRepository; | |
import org.eclipse.openk.sp.db.dao.StandbyListRepository; | |
import org.eclipse.openk.sp.db.dao.StandbyScheduleBodyRepository; | |
import org.eclipse.openk.sp.db.dao.StandbyStatusRepository; | |
import org.eclipse.openk.sp.db.dao.UserInStandbyGroupRepository; | |
import org.eclipse.openk.sp.db.dao.UserRepository; | |
import org.eclipse.openk.sp.db.model.CalendarDay; | |
import org.eclipse.openk.sp.db.model.StandbyDuration; | |
import org.eclipse.openk.sp.db.model.StandbyGroup; | |
import org.eclipse.openk.sp.db.model.StandbyScheduleBody; | |
import org.eclipse.openk.sp.db.model.StandbyStatus; | |
import org.eclipse.openk.sp.db.model.User; | |
import org.eclipse.openk.sp.db.model.UserInStandbyGroup; | |
import org.eclipse.openk.sp.dto.StandbyScheduleBlueprintDto; | |
import org.eclipse.openk.sp.dto.planning.PlanningBodyResultDto; | |
import org.eclipse.openk.sp.dto.planning.PlanningMsgDto; | |
import org.eclipse.openk.sp.dto.planning.PlanningPhaseDto; | |
import org.eclipse.openk.sp.dto.planning.StandbyScheduleActionDto; | |
import org.eclipse.openk.sp.exceptions.SpException; | |
import org.eclipse.openk.sp.mail.MailRequest; | |
import org.eclipse.openk.sp.util.DateHelper; | |
import org.eclipse.openk.sp.util.SpMsg; | |
import org.junit.Ignore; | |
import org.junit.Test; | |
import org.junit.runner.RunWith; | |
import org.mockito.InjectMocks; | |
import org.mockito.Mock; | |
import org.mockito.Mockito; | |
import org.mockito.Spy; | |
import org.mockito.runners.MockitoJUnitRunner; | |
@RunWith(MockitoJUnitRunner.class) | |
public class PlanningControllerTest extends PlanningController { | |
protected static final Logger LOGGER = Logger.getLogger(PlanningControllerTest.class); | |
private static final String ERROR_MSG_MISSING_ENTITY = "Eines der folgenden Entities kann nicht gefunden werden:"; | |
private static final String ERROR_MSG_STANDBYLIST = "Es fehlt der folgendende Einagebeparameter : StandbyList"; | |
private static final String ERROR_MSG_STANDBYGROUP = "Es fehlt der folgendende Einagebeparameter : StandbyGroup"; | |
private static final String ERROR_MSG_VALID_FROM = "Es fehlt der folgendende Einagebeparameter : validFrom"; | |
private static final String ERROR_MSG_VALID_TO = "Es fehlt der folgendende Einagebeparameter : validTo"; | |
@InjectMocks | |
@Spy | |
PlanningController planningController; | |
@Mock | |
private StandbyGroupRepository standbyGroupRepository; | |
@Mock | |
private StandbyListRepository standbyListRepository; | |
@Mock | |
private StandbyDurationRepository standbyDurationRepository; | |
@Mock | |
private StandbyStatusRepository standbyStatusRepository; | |
@Mock | |
private StandbyScheduleBodyRepository standbyScheduleBodyRepository; | |
@Mock | |
private UserRepository userRepository; | |
@Mock | |
private CalendarRepository calendarRepository; | |
@Mock | |
private UserController userController; | |
@Mock | |
private ValidationController validationController; | |
@Mock | |
private ArchiveController archiveController; | |
@Mock | |
private MailRequest mailRequest; | |
@Mock | |
private UserInStandbyGroupRepository uisgRepository; | |
@Test | |
public void calculatePlanTest() throws SpException { | |
assertNotNull(new Boolean(true)); | |
} | |
@Test | |
public void startPlanningTest() throws SpException { | |
String username = "JUnit"; | |
StandbyScheduleBlueprintDto standbyBlueprintDto = new StandbyScheduleBlueprintDto(); | |
standbyBlueprintDto.setStandbyGroupId(1L); | |
standbyBlueprintDto.setStandbyListId(1L); | |
standbyBlueprintDto.setStartIdOfUser(1L); | |
standbyBlueprintDto.setValidFrom(DateHelper.getDate(2018, 1, 1, 8, 0, 0)); | |
standbyBlueprintDto.setValidTo(DateHelper.getDate(2018, 1, 1, 16, 0, 0)); | |
StandbyGroup stbyGroup = new StandbyGroup(); | |
stbyGroup.setId(1l); | |
List<UserInStandbyGroup> lsUserInStandbyGroup = new ArrayList<>(); | |
User user1 = new User(); | |
user1.setFirstname("J."); | |
user1.setLastname("Unit"); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
uisg.setUser(user1); | |
Map<Integer, PlanningPhaseDto> planningPhaseMap = new HashMap<>(); | |
PlanningPhaseDto planningPhaseDto = new PlanningPhaseDto(); | |
planningPhaseDto.setStartDate(DateHelper.getDate(2018, 1, 1, 0, 0, 0)); | |
planningPhaseDto.setEndDate(DateHelper.getDate(2018, 1, 31, 0, 0, 0)); | |
planningPhaseDto.setLsUsers(lsUserInStandbyGroup); | |
planningPhaseMap.put(1, planningPhaseDto); | |
try { | |
// success test 01 - validInput | |
Mockito.doReturn(stbyGroup).when(standbyGroupRepository).findOne(Mockito.any()); | |
Mockito.doReturn(true).when(planningController).validateInputForPlanCalculation(standbyBlueprintDto); | |
Mockito.doReturn(planningPhaseMap).when(planningController).calculatePlanningPhaseMap(standbyBlueprintDto); | |
Mockito.doReturn(new PlanningBodyResultDto()).when(planningController).calculatePlanForPhase(Mockito.any(), | |
Mockito.any(), Mockito.any(), Mockito.anyInt(), Mockito.any()); | |
planningController.startPlanning(standbyBlueprintDto, username); | |
// success test 02 - invalidInput | |
Mockito.doReturn(false).when(planningController).validateInputForPlanCalculation(standbyBlueprintDto); | |
Mockito.doReturn(planningPhaseMap).when(planningController).calculatePlanningPhaseMap(standbyBlueprintDto); | |
Mockito.doReturn(new PlanningBodyResultDto()).when(planningController).calculatePlanForPhase(Mockito.any(), | |
Mockito.any(), Mockito.any(), Mockito.anyInt(), Mockito.any()); | |
planningController.startPlanning(standbyBlueprintDto, username); | |
} catch (SpException e) { | |
assertNull(e); | |
} | |
// negative test 01 | |
try { | |
Mockito.doThrow(new SpException()).when(planningController) | |
.validateInputForPlanCalculation(standbyBlueprintDto); | |
planningController.startPlanning(standbyBlueprintDto, username); | |
} catch (SpException e) { | |
assertNotNull(e); | |
} | |
// negative test 02 | |
try { | |
Mockito.doThrow(new IllegalArgumentException()).when(standbyGroupRepository).findOne(Mockito.any()); | |
planningController.startPlanning(standbyBlueprintDto, username); | |
} catch (SpException e) { | |
assertNotNull(e); | |
} | |
} | |
@Test | |
public void calculatePlanForPhaseTest() { | |
PlanningPhaseDto dto = new PlanningPhaseDto(); | |
List<UserInStandbyGroup> lsUserInStandbyGroup = this.getTestDataForUserInStandbyGroups(); | |
dto.setLsUsers(lsUserInStandbyGroup); | |
dto.setStartDate(new Date()); | |
dto.setEndDate(DateHelper.addDaysToDate(new Date(), 7)); | |
Long lastStartUserId = 1L; | |
String username = "JUnit"; | |
when(standbyScheduleBodyRepository.save(Mockito.any(StandbyScheduleBody.class))) | |
.thenReturn(new StandbyScheduleBody()); | |
when(userRepository.findOne(Mockito.any())).thenReturn(lsUserInStandbyGroup.get(0).getUser()); | |
Mockito.doNothing().when(planningController).changeOrDeleteExistingBodies(Mockito.any(), Mockito.any(), | |
Mockito.any(), Mockito.any(), Mockito.any()); | |
try { | |
planningController.calculatePlanForPhase(dto, lastStartUserId, username, 1, dto.getEndDate()); | |
} catch (Exception e) { | |
LOGGER.error(e, e); | |
assertNull(e); | |
} | |
} | |
@Ignore | |
@Test | |
public void calculatePlanningPhaseMapTest() { | |
Map<Integer, PlanningPhaseDto> planningPhaseMap = new HashMap<>(); | |
StandbyScheduleBlueprintDto standbyBlueprintDto = new StandbyScheduleBlueprintDto(); | |
standbyBlueprintDto.setStandbyGroupId(1L); | |
standbyBlueprintDto.setStandbyListId(1L); | |
standbyBlueprintDto.setStartIdOfUser(1L); | |
standbyBlueprintDto.setValidFrom(DateHelper.getDate(2018, 1, 1, 8, 0, 0)); | |
standbyBlueprintDto.setValidTo(DateHelper.getDate(2018, 1, 9, 16, 0, 0)); | |
List<UserInStandbyGroup> lsUserInStandbyGroupsEmpty = new ArrayList<>(); | |
List<UserInStandbyGroup> lsUserInStandbyGroups = new ArrayList<>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
User user = new User(); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
user = new User(); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
try { | |
// [SUCCESS] returning null list for lsUserInGroup | |
when(uisgRepository.findUserForInterval(Mockito.any(), Mockito.any(), Mockito.any())).thenReturn(null); | |
planningPhaseMap = planningController.calculatePlanningPhaseMap(standbyBlueprintDto); | |
assertNotNull(planningPhaseMap); | |
assertTrue(planningPhaseMap.isEmpty()); | |
// [SUCCESS] returning empty list for lsUserInGroup | |
when(uisgRepository.findUserForInterval(Mockito.any(), Mockito.any(), Mockito.any())) | |
.thenReturn(lsUserInStandbyGroupsEmpty); | |
planningPhaseMap = planningController.calculatePlanningPhaseMap(standbyBlueprintDto); | |
assertNotNull(planningPhaseMap); | |
assertTrue(planningPhaseMap.isEmpty()); | |
// [SUCCESS] returning list for lsUserInGroup | |
when(uisgRepository.findUserForInterval(Mockito.any(), Mockito.any(), Mockito.any())) | |
.thenReturn(lsUserInStandbyGroups); | |
planningPhaseMap = planningController.calculatePlanningPhaseMap(standbyBlueprintDto); | |
assertNotNull(planningPhaseMap); | |
assertFalse(planningPhaseMap.isEmpty()); | |
} catch (Exception e) { | |
LOGGER.error(e, e); | |
assertNull(e); | |
} | |
} | |
@Test | |
public void createScheduleBodyEntryTest() { | |
Date startDate = new Date(); | |
Date currentDate = new Date(); | |
Date lastDate = new Date(); | |
String username = "JUnit"; | |
Long lastUserId = 1L; | |
List<UserInStandbyGroup> lsUserInStandbyGroup = this.getTestDataForUserInStandbyGroups(); | |
List<StandbyDuration> lsDuration = new ArrayList<>(); | |
StandbyDuration dur = new StandbyDuration(); | |
dur.setId(1L); | |
dur.setNextUserInNextDuration(true); | |
dur.setValidDayFrom(1); | |
dur.setValidDayTo(1); | |
dur.setValidFrom(DateHelper.getDate(2018, 10, 1)); | |
dur.setValidFrom(DateHelper.getDate(2018, 10, 31)); | |
lsDuration.add(dur); | |
when(standbyDurationRepository.findDurationForValidFromDay(Mockito.any(), Mockito.any())) | |
.thenReturn(lsDuration); | |
when(standbyScheduleBodyRepository.save(Mockito.any(StandbyScheduleBody.class))) | |
.thenReturn(new StandbyScheduleBody()); | |
// covered days = 1 | |
try { | |
PlanningBodyResultDto dto = planningController.calculateScheduleBodyEntries(lsUserInStandbyGroup, startDate, | |
currentDate, lastDate, lastUserId, username, lastUserId, 1); | |
assertNotNull(dto); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
// covered days > 1 | |
lsDuration.get(0).setValidDayTo(3); | |
lastDate = DateHelper.addDaysToDate(new Date(), 5); | |
try { | |
PlanningBodyResultDto dto = planningController.calculateScheduleBodyEntries(lsUserInStandbyGroup, startDate, | |
currentDate, lastDate, lastUserId, username, lastUserId, 1); | |
assertNotNull(dto); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
// date after current | |
try { | |
currentDate = DateHelper.addDaysToDate(new Date(), 1); | |
lastDate = DateHelper.addDaysToDate(new Date(), 1); | |
PlanningBodyResultDto dto = planningController.calculateScheduleBodyEntries(lsUserInStandbyGroup, startDate, | |
currentDate, lastDate, lastUserId, username, lastUserId, 1); | |
assertNotNull(dto); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
// fitting duration = false | |
when(standbyDurationRepository.findDurationForValidFromDay(Mockito.any(), Mockito.any())).thenReturn(null); | |
try { | |
PlanningBodyResultDto dto = planningController.calculateScheduleBodyEntries(lsUserInStandbyGroup, startDate, | |
currentDate, lastDate, lastUserId, username, lastUserId, 1); | |
assertNotNull(dto); | |
assertTrue( | |
dto.getLsMsg().get(0).getMsg().contains("wurde kein aktiver Zeitraum für folgenden Tag gefunden")); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
} | |
public PlanningBodyResultDto calculateScheduleBodyEntries(List<UserInStandbyGroup> lsUserInGroup, Date currentDate, | |
Date lastDate, int currentPosition, String username) { | |
StandbyGroup group = lsUserInGroup.get(0).getStandbyGroup(); | |
PlanningBodyResultDto resultObj = new PlanningBodyResultDto(); | |
StandbyDuration fittingDuration = this.getFittingDurationOfGroup(group, currentDate); | |
if (fittingDuration != null) { | |
int intStartDay = fittingDuration.getValidDayFrom(); | |
int intEndDay = fittingDuration.getValidDayTo(); | |
int coveredDays = DateHelper.calculateDifferenceOfDays(intStartDay, intEndDay, new Date(), new Date()); | |
Date nextDay = null; | |
if (coveredDays == 0) { | |
// single entry with no over night duration | |
LOGGER.debug("A day was found that just cover a single day."); | |
StandbyScheduleBody stbyBody = this.createScheduleBodyObject(group, username, currentDate, | |
lsUserInGroup.get(currentPosition).getUser(), fittingDuration, | |
PlanningController.TXT_AUTOMATIC_PLANNING); | |
standbyScheduleBodyRepository.save(stbyBody); | |
resultObj.getLsMsg().add(createMsgSavingBody(stbyBody)); | |
} else { | |
// entries with over night or many days duration | |
for (int i = 0; i < coveredDays; i++) { | |
nextDay = DateHelper.addDaysToDate(currentDate, 1); | |
if (DateHelper.isDateAfter(nextDay, lastDate)) { | |
String warning = "Für das Datum (" + currentDate | |
+ ") wird kein Eintrag erzeugt, da der Folgetag den definierten Zeitraum überschereitet."; | |
resultObj.getLsMsg() | |
.add(new PlanningMsgDto(warning, PlanningMsgDto.WARN, PlanningMsgDto.CSS_WARN)); | |
resultObj.setTempDate(nextDay); | |
resultObj.setNewPosition(currentPosition); | |
return resultObj; | |
} else { | |
List<StandbyScheduleBody> lsScheduleBodies = this.createOverlappingScheduleBodyObjects(group, | |
username, currentDate, lsUserInGroup.get(currentPosition).getUser(), fittingDuration, i, | |
coveredDays); | |
for (StandbyScheduleBody stbyBody : lsScheduleBodies) { | |
standbyScheduleBodyRepository.save(stbyBody); | |
resultObj.getLsMsg().add(createMsgSavingBody(stbyBody)); | |
resultObj.setTempDate(nextDay); | |
} | |
resultObj.setNewPosition(currentPosition); | |
resultObj.setTempDate(nextDay); | |
currentDate = resultObj.getTempDate(); | |
} | |
} | |
} | |
resultObj.setTempDate(nextDay); | |
resultObj.setCurrentDuration(fittingDuration); | |
} else { | |
resultObj.setTempDate(DateHelper.addDaysToDate(currentDate, 1)); | |
resultObj.getLsMsg().add(this.createMsgNotAvailable(group, currentDate)); | |
} | |
return resultObj; | |
} | |
@Test | |
public void createMsgExtendHolidayTest() { | |
StandbyScheduleBody stbyBody = new StandbyScheduleBody(); | |
User user = new User(); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
stbyBody.setUser(user); | |
Date date = new Date(); | |
Boolean isStandbyTimeExtension = true; | |
// positive test - extend | |
PlanningMsgDto dto = planningController.createMsgExtendHoliday(stbyBody, date, isStandbyTimeExtension); | |
assertNotNull(dto); | |
assertTrue(dto.getMsg().endsWith("verlängert werden.")); | |
// negative test - pre | |
isStandbyTimeExtension = false; | |
dto = planningController.createMsgExtendHoliday(stbyBody, date, isStandbyTimeExtension); | |
assertNotNull(dto); | |
assertTrue(dto.getMsg().endsWith("vorgezogen werden.")); | |
} | |
@Test | |
public void createMsgStartOfPhaseTest() { | |
List<UserInStandbyGroup> lsUserInStandbyGroup = this.getTestDataForUserInStandbyGroups(); | |
Integer phaseId = 1; | |
PlanningPhaseDto phase = new PlanningPhaseDto(); | |
phase.setEndDate(new Date()); | |
phase.setStartDate(new Date()); | |
phase.setLsUsers(lsUserInStandbyGroup); | |
try { | |
List<PlanningMsgDto> lsMsgDto = planningController.createMsgStartOfPhase(phaseId, phase); | |
assertNotNull(lsMsgDto); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
} | |
@Test | |
public void createMsgEndOfPhaseTest() { | |
Integer phaseId = 1; | |
PlanningMsgDto msgDto = planningController.createMsgEndOfPhase(phaseId); | |
assertNotNull(msgDto); | |
} | |
@Test | |
public void createMsgSavingBodyTest() { | |
StandbyScheduleBody stbyBody = new StandbyScheduleBody(); | |
User user = new User(); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
stbyBody.setUser(user); | |
stbyBody.setValidFrom(new Date()); | |
stbyBody.setValidTo(new Date()); | |
PlanningMsgDto msgDto = planningController.createMsgSavingBody(stbyBody); | |
assertNotNull(msgDto); | |
} | |
@Test | |
public void createMsgNotAvailableTest() { | |
StandbyGroup group = new StandbyGroup(); | |
group.setTitle("Test"); | |
Date currentDate = new Date(); | |
PlanningMsgDto msgDto = planningController.createMsgNotAvailable(group, currentDate); | |
assertNotNull(msgDto); | |
} | |
@Test | |
public void createMsgNumberOfPhasesTest() { | |
Map<Integer, PlanningPhaseDto> map = new HashMap<>(); | |
map.put(1, new PlanningPhaseDto()); | |
map.put(2, new PlanningPhaseDto()); | |
StandbyScheduleBlueprintDto dto = new StandbyScheduleBlueprintDto(); | |
dto.setValidFrom(new Date()); | |
dto.setValidTo(new Date()); | |
// success | |
PlanningMsgDto msgDto = planningController.createMsgNumberOfPhases(map, dto); | |
assertNotNull(msgDto); | |
assertTrue(msgDto.getMsg().startsWith("Durch wechselnde Gruppenmitglieder wurde(n)")); | |
// empty map | |
map = new HashMap<>(); | |
msgDto = planningController.createMsgNumberOfPhases(map, dto); | |
assertNotNull(msgDto); | |
assertTrue(msgDto.getMsg().startsWith("Auf Grund fehlender Bereitschaften im gewählten Zeitraum,")); | |
} | |
@Test | |
public void createMsgGroupLeaderChangedTest() { | |
List<UserInStandbyGroup> lsUserInStandbyGroup = new ArrayList<UserInStandbyGroup>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
User nextUser = new User(); | |
nextUser.setFirstname("Next"); | |
nextUser.setLastname("User"); | |
uisg.setUser(nextUser); | |
lsUserInStandbyGroup.add(uisg); | |
User user = new User(); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
PlanningMsgDto msgDto = planningController.createMsgGroupLeaderChanged(user, nextUser); | |
assertNotNull(msgDto); | |
} | |
@Test | |
public void deleteScheduleBodiesByIdsTest() { | |
List<Long> lsIds = new ArrayList<>(); | |
lsIds.add(1L); | |
lsIds.add(2L); | |
Mockito.doNothing().when(standbyScheduleBodyRepository).delete(1L); | |
try { | |
planningController.deleteScheduleBodiesByIds(lsIds); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
lsIds.add(3L); | |
Mockito.doThrow(new IllegalArgumentException()).when(standbyScheduleBodyRepository).delete(3L); | |
try { | |
planningController.deleteScheduleBodiesByIds(lsIds); | |
} catch (SpException e) { | |
assertNotNull(e); | |
} | |
} | |
@Test | |
public void validateInputForPlanCalculationTest() { | |
StandbyScheduleBlueprintDto standbyBlueprintDto = new StandbyScheduleBlueprintDto(); | |
// [FAIL] TEST INVALID LIST : EMPTY | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertEquals(ERROR_MSG_STANDBYLIST, e.getMessage()); | |
} | |
// [FAIL] TEST INVALID LIST : UNKOWN ENTITY | |
when(standbyListRepository.exists(Mockito.anyLong())).thenReturn(false); | |
standbyBlueprintDto.setStandbyListId(1l); | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertTrue(e.getMessage().startsWith(ERROR_MSG_MISSING_ENTITY)); | |
} | |
// [FAIL] TEST INVALID GROUP : EMPTY | |
when(standbyListRepository.exists(Mockito.anyLong())).thenReturn(true); | |
standbyBlueprintDto.setStandbyListId(1l); | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertEquals(ERROR_MSG_STANDBYGROUP, e.getMessage()); | |
} | |
// [FAIL] TEST INVALID GROUP : UNKOWN ENTITY | |
when(standbyGroupRepository.exists(Mockito.anyLong())).thenReturn(false); | |
standbyBlueprintDto.setStandbyGroupId(1l); | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertTrue(e.getMessage().startsWith(ERROR_MSG_MISSING_ENTITY)); | |
} | |
// [FAIL] TEST INVALID VALID FROM : EMPTY | |
when(standbyGroupRepository.exists(Mockito.anyLong())).thenReturn(true); | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertEquals(ERROR_MSG_VALID_FROM, e.getMessage()); | |
} | |
// [FAIL] TEST INVALID VALID TO : EMPTY | |
standbyBlueprintDto.setValidFrom(new Date()); | |
try { | |
planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
} catch (SpException e) { | |
assertNotNull(e); | |
assertEquals(ERROR_MSG_VALID_TO, e.getMessage()); | |
} | |
// [SUCCESS] TEST VALID | |
standbyBlueprintDto.setValidTo(new Date()); | |
try { | |
Boolean result = planningController.validateInputForPlanCalculation(standbyBlueprintDto); | |
assertTrue(result); | |
} catch (SpException e) { | |
assertNull(e); | |
} | |
} | |
@Test | |
public void isHolidayTest() { | |
StandbyGroup group = new StandbyGroup(); | |
List<CalendarDay> lsCalendarDays = null; | |
// negative test - null value | |
when(calendarRepository.findValidByDate(Mockito.any(), Mockito.any())).thenReturn(lsCalendarDays); | |
Boolean result = planningController.isHoliday(new Date(), group); | |
assertTrue(!result); | |
// negative test - empty list | |
lsCalendarDays = new ArrayList<>(); | |
when(calendarRepository.findValidByDate(Mockito.any(), Mockito.any())).thenReturn(lsCalendarDays); | |
result = planningController.isHoliday(new Date(), group); | |
assertTrue(!result); | |
// negative test - object in Ignore List | |
CalendarDay cal = new CalendarDay(); | |
lsCalendarDays.add(cal); | |
when(calendarRepository.findValidByDate(Mockito.any(), Mockito.any())).thenReturn(lsCalendarDays); | |
group.getLsIgnoredCalendarDays().add(cal); | |
result = planningController.isHoliday(new Date(), group); | |
assertTrue(!result); | |
// positiv test | |
when(calendarRepository.findValidByDate(Mockito.any(), Mockito.any())).thenReturn(lsCalendarDays); | |
group.getLsIgnoredCalendarDays().remove(cal); | |
result = planningController.isHoliday(new Date(), group); | |
assertTrue(result); | |
} | |
@Test | |
public void getFittingDurationOfGroupTest() { | |
StandbyGroup group = new StandbyGroup(); | |
Date date = new Date(); | |
List<StandbyDuration> lsDuration = new ArrayList<>(); | |
StandbyDuration result = null; | |
when(standbyDurationRepository.findDurationForValidFromDay(Mockito.any(), Mockito.any())) | |
.thenReturn(lsDuration); | |
// success | |
lsDuration.add(new StandbyDuration()); | |
result = planningController.getFittingDurationOfGroup(group, date); | |
assertNotNull(result); | |
// failure | |
lsDuration = new ArrayList<>(); | |
when(standbyDurationRepository.findDurationForValidFromDay(Mockito.any(), Mockito.any())) | |
.thenReturn(lsDuration); | |
result = planningController.getFittingDurationOfGroup(group, date); | |
assertNull(result); | |
when(standbyDurationRepository.findDurationForValidFromDay(Mockito.any(), Mockito.any())).thenReturn(null); | |
result = planningController.getFittingDurationOfGroup(group, date); | |
assertNull(result); | |
} | |
@Test | |
public void getFittingDurationByValidToTest() { | |
StandbyGroup group = new StandbyGroup(); | |
Date date = new Date(); | |
List<StandbyDuration> lsDuration = new ArrayList<>(); | |
StandbyDuration result = null; | |
when(standbyDurationRepository.findDurationForValidToDay(Mockito.any(), Mockito.any())).thenReturn(lsDuration); | |
// success | |
lsDuration.add(new StandbyDuration()); | |
result = planningController.getFittingDurationByValidTo(group, date); | |
assertNotNull(result); | |
// failure | |
lsDuration = new ArrayList<>(); | |
when(standbyDurationRepository.findDurationForValidToDay(Mockito.any(), Mockito.any())).thenReturn(lsDuration); | |
result = planningController.getFittingDurationByValidTo(group, date); | |
assertNull(result); | |
when(standbyDurationRepository.findDurationForValidToDay(Mockito.any(), Mockito.any())).thenReturn(null); | |
result = planningController.getFittingDurationByValidTo(group, date); | |
assertNull(result); | |
} | |
@Test | |
public void resetCounterToNewPositionTest() { | |
int currentPosition = 0; | |
Long lastStartUserId = 1L; | |
List<UserInStandbyGroup> lsUserInGroup = new ArrayList<>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
User user = new User(); | |
user.setId(1L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
uisg = new UserInStandbyGroup(); | |
user = new User(); | |
user.setId(2L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
uisg = new UserInStandbyGroup(); | |
user = new User(); | |
user.setId(3L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
Boolean isNextUserInNextCycle = false; | |
Boolean isNextUserInDuration = true; | |
PlanningBodyResultDto response = null; | |
response = planningController.resetCounterToNewPosition(currentPosition, lastStartUserId, lsUserInGroup, | |
isNextUserInNextCycle, isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 1); | |
// not start user | |
response = planningController.resetCounterToNewPosition(1, 2L, lsUserInGroup, isNextUserInNextCycle, | |
isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 2); | |
// test start from beginning because list ends | |
response = planningController.resetCounterToNewPosition(2, 2L, lsUserInGroup, isNextUserInNextCycle, | |
isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 0); | |
// user at position but isNextUserInNextCycle = false | |
response = planningController.resetCounterToNewPosition(0, 2L, lsUserInGroup, isNextUserInNextCycle, | |
isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 1); | |
// skip position because user at position and isNextUserInNextCycle = true | |
isNextUserInNextCycle = true; | |
response = planningController.resetCounterToNewPosition(0, 2L, lsUserInGroup, isNextUserInNextCycle, | |
isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 2); | |
// next user in duration = false | |
isNextUserInDuration = false; | |
response = planningController.resetCounterToNewPosition(0, 2L, lsUserInGroup, isNextUserInNextCycle, | |
isNextUserInDuration); | |
currentPosition = response.getNewPosition(); | |
assertTrue(currentPosition == 0); | |
} | |
@Test | |
public void getNextAvailablePositionTest() { | |
int currentPosition = 0; | |
List<UserInStandbyGroup> lsUserInGroup = new ArrayList<>(); | |
lsUserInGroup.add(new UserInStandbyGroup()); | |
lsUserInGroup.add(new UserInStandbyGroup()); | |
currentPosition = planningController.getNextAvailablePosition(currentPosition, lsUserInGroup); | |
assertTrue(currentPosition == 1); | |
// start at first position because of end of list. | |
currentPosition = planningController.getNextAvailablePosition(currentPosition, lsUserInGroup); | |
assertTrue(currentPosition == 0); | |
} | |
@Test | |
public void getIndexOfLastPlannedUserTest() { | |
Long lastStartUserId = 1L; | |
List<UserInStandbyGroup> lsUserInGroup = new ArrayList<>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
User user = new User(); | |
user.setId(1L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
uisg = new UserInStandbyGroup(); | |
user = new User(); | |
user.setId(2L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
uisg = new UserInStandbyGroup(); | |
user = new User(); | |
user.setId(3L); | |
uisg.setUser(user); | |
lsUserInGroup.add(uisg); | |
int result = -1; | |
result = planningController.getIndexOfLastPlannedUser(lastStartUserId, lsUserInGroup); | |
assertTrue(result == 0); | |
lastStartUserId = 3L; | |
result = planningController.getIndexOfLastPlannedUser(lastStartUserId, lsUserInGroup); | |
assertTrue(result == 2); | |
lastStartUserId = 4L; | |
result = planningController.getIndexOfLastPlannedUser(lastStartUserId, lsUserInGroup); | |
assertTrue(result == -1); | |
} | |
@Test | |
public void logPhasesTest() { | |
try { | |
Map<Integer, PlanningPhaseDto> resultMap = new HashMap<>(); | |
List<UserInStandbyGroup> lsUserInStandbyGroups = new ArrayList<>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
uisg.setId(1l); | |
uisg.setStandbyGroup(new StandbyGroup()); | |
User user = new User(); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
user = new User(); | |
user.setFirstname("Nr."); | |
user.setLastname("Zwei"); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
PlanningPhaseDto dto = new PlanningPhaseDto(new Date(), new Date(), lsUserInStandbyGroups); | |
resultMap.put(1, dto); | |
planningController.logPhases(resultMap); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
} | |
@Test | |
public void replaceUserInPlanTest() { | |
StandbyScheduleActionDto actionDto = new StandbyScheduleActionDto(); | |
actionDto.setCurrentUserId(1L); | |
actionDto.setNewUserId(2L); | |
actionDto.setScheduleBodyId(1L); | |
actionDto.setStandbyGroupId(1L); | |
actionDto.setStatusId(1L); | |
actionDto.setValidFromDate(new Date()); | |
actionDto.setValidToDate(new Date()); | |
String username = "JUnit"; | |
List<StandbyScheduleBody> lsStandbyScheduleBodies = new ArrayList<>(); | |
lsStandbyScheduleBodies.add(new StandbyScheduleBody()); | |
when(standbyScheduleBodyRepository.findByUserAndGroupAndDateAndStatus(Mockito.anyLong(), Mockito.anyLong(), | |
Mockito.any(), Mockito.any(), Mockito.anyLong())).thenReturn(lsStandbyScheduleBodies); | |
when(standbyStatusRepository.findOne(Mockito.any())).thenReturn(new StandbyStatus()); | |
when(userRepository.findOne(Mockito.any())).thenReturn(new User()); | |
when(userRepository.findOne(Mockito.any())).thenReturn(new User()); | |
when(standbyScheduleBodyRepository.save(Mockito.any(StandbyScheduleBody.class))) | |
.thenReturn(new StandbyScheduleBody()); | |
// success | |
try { | |
when(userController.isUserInGroup(Mockito.anyLong(), Mockito.anyLong(), Mockito.any(), Mockito.any())) | |
.thenReturn(true); | |
planningController.replaceUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
// test error handling | |
Mockito.doThrow(new IllegalArgumentException()).when(userRepository).findOne(Mockito.any()); | |
try { | |
planningController.replaceUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
} | |
@Test | |
public void splitScheduleBodyTest() { | |
Date defaultStartDate = DateHelper.getDate(2018, 10, 1, 16, 0, 0); | |
Date defaultEndDate = DateHelper.getDate(2018, 10, 1, 22, 0, 0); | |
Date defaultEndDateOverlapping = DateHelper.getDate(2018, 10, 2, 8, 0, 0); | |
StandbyScheduleBody body = new StandbyScheduleBody(); | |
body.setValidFrom(defaultStartDate); | |
body.setValidTo(defaultStartDate); | |
Date from = defaultStartDate; | |
Date to = defaultStartDate; | |
User newUser = new User(); | |
String modifiedBy = "JUnit"; | |
// negative test - null pointer | |
try { | |
StandbyScheduleBody bodyNull = null; | |
planningController.splitScheduleBody(bodyNull, from, to, newUser, modifiedBy); | |
} catch (SpException e) { | |
assertNotNull(e); | |
} | |
// positive tests | |
when(standbyScheduleBodyRepository.save(Mockito.any(StandbyScheduleBody.class))).thenReturn(body); | |
try { | |
Boolean boolResult = false; | |
// test success - no interval | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - same start and same end | |
body.setValidTo(defaultEndDate); | |
to = defaultEndDate; | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - same start and earlier end | |
body.setValidTo(defaultEndDate); | |
to = DateHelper.getDate(2018, 10, 1, 18, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - same start and later end | |
body.setValidTo(defaultEndDate); | |
to = DateHelper.getDate(2018, 10, 1, 23, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - same start and overlaping end | |
body.setValidTo(defaultEndDate); | |
to = defaultEndDateOverlapping; | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - later start and same end | |
body.setValidTo(defaultEndDate); | |
to = defaultEndDate; | |
from = DateHelper.getDate(2018, 10, 1, 19, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - later start and later end | |
body.setValidTo(defaultEndDate); | |
to = DateHelper.getDate(2018, 10, 1, 23, 0, 0); | |
from = DateHelper.getDate(2018, 10, 1, 19, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - later start and earlier end | |
body.setValidTo(defaultEndDate); | |
to = DateHelper.getDate(2018, 10, 1, 21, 0, 0); | |
from = DateHelper.getDate(2018, 10, 1, 19, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
// test success - overlaping start | |
body.setValidTo(defaultEndDate); | |
to = defaultEndDate; | |
from = DateHelper.getDate(2018, 9, 30, 19, 0, 0); | |
boolResult = planningController.splitScheduleBody(body, from, to, newUser, modifiedBy); | |
assertTrue(boolResult); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
} | |
@Test | |
public void moveUserInPlanTest() { | |
StandbyScheduleActionDto actionDto = new StandbyScheduleActionDto(); | |
actionDto.setScheduleBodyId(1L); | |
actionDto.setValidFromDate(new Date()); | |
actionDto.setValidToDate(new Date()); | |
actionDto.setNewUserId(1L); | |
actionDto.setStandbyGroupId(1L); | |
String username = "JUnit"; | |
StandbyScheduleBody responseBody = new StandbyScheduleBody(); | |
responseBody.setId(1L); | |
StandbyStatus status = new StandbyStatus(); | |
status.setId(SpMsg.STATUS_PLANNING); | |
responseBody.setStatus(status); | |
StandbyGroup responseGroup = new StandbyGroup(); | |
responseGroup.setId(1L); | |
responseBody.setStandbyGroup(responseGroup); | |
when(standbyScheduleBodyRepository.findOne(Mockito.any())).thenReturn(responseBody); | |
when(standbyGroupRepository.findOne(actionDto.getStandbyGroupId())).thenReturn(responseGroup); | |
when(standbyScheduleBodyRepository.save(Mockito.any(StandbyScheduleBody.class))).thenReturn(responseBody); | |
// test success - equal date | |
try { | |
when(validationController.startValidation(Mockito.any(), Mockito.any(), Mockito.any(), Mockito.any(), | |
Mockito.any(), Mockito.any())).thenReturn(new ArrayList<PlanningMsgDto>()); | |
when(userController.isUserValid(Mockito.anyLong(), Mockito.any(), Mockito.any())).thenReturn(true); | |
when(userController.isUserInGroup(Mockito.anyLong(), Mockito.anyLong(), Mockito.any(), Mockito.any())) | |
.thenReturn(true); | |
when(archiveController.createArchiveOnMove(Mockito.any(), Mockito.any())).thenReturn(true); | |
// when(mailRequestSendDate.sendMail(Mockito.any(), Mockito.any(), | |
// Mockito.any(), Mockito.any())) | |
// .thenReturn(null); | |
planningController.moveUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
// test success - different date | |
actionDto.setValidToDate(DateHelper.addDaysToDate(new Date(), 3)); | |
try { | |
when(userController.isUserValid(Mockito.anyLong(), Mockito.any(), Mockito.any())).thenReturn(true); | |
when(userController.isUserInGroup(Mockito.anyLong(), Mockito.anyLong(), Mockito.any(), Mockito.any())) | |
.thenReturn(true); | |
planningController.moveUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
// test success - bigger from date | |
actionDto.setValidFromDate(DateHelper.addDaysToDate(new Date(), 3)); | |
actionDto.setValidToDate(new Date()); | |
try { | |
when(userController.isUserValid(Mockito.anyLong(), Mockito.any(), Mockito.any())).thenReturn(true); | |
when(userController.isUserInGroup(Mockito.anyLong(), Mockito.anyLong(), Mockito.any(), Mockito.any())) | |
.thenReturn(true); | |
planningController.moveUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
// test error handling | |
Mockito.doThrow(new IllegalArgumentException()).when(standbyScheduleBodyRepository).findOne(Mockito.any()); | |
try { | |
planningController.moveUserInPlan(actionDto, username); | |
} catch (Exception e) { | |
assertNotNull(e); | |
} | |
} | |
/** | |
* method to get a test data UserInStandbyGroup List. | |
* | |
* @return | |
*/ | |
private List<UserInStandbyGroup> getTestDataForUserInStandbyGroups() { | |
List<UserInStandbyGroup> lsUserInStandbyGroups = new ArrayList<>(); | |
UserInStandbyGroup uisg = new UserInStandbyGroup(); | |
uisg.setId(1l); | |
uisg.setStandbyGroup(new StandbyGroup()); | |
uisg.setPosition(3); | |
User user = new User(); | |
user.setId(1L); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
uisg = new UserInStandbyGroup(); | |
uisg.setId(2l); | |
uisg.setStandbyGroup(new StandbyGroup()); | |
uisg.setPosition(1); | |
user = new User(); | |
user.setId(2L); | |
user.setFirstname("Nr."); | |
user.setLastname("Zwei"); | |
uisg.setUser(user); | |
lsUserInStandbyGroups.add(uisg); | |
return lsUserInStandbyGroups; | |
} | |
@Test | |
public void calculateHolidayTest() { | |
StandbyGroup group = new StandbyGroup(); | |
Date date = DateHelper.getDate(2018, 1, 1); | |
StandbyScheduleBody stbyBody = new StandbyScheduleBody(); | |
StandbyScheduleBody resultExtend = new StandbyScheduleBody(); | |
resultExtend.setId(1L); | |
StandbyScheduleBody resultPreDraw = new StandbyScheduleBody(); | |
resultPreDraw.setId(2L); | |
try { | |
Mockito.doReturn(true).when(planningController).isHoliday(Mockito.any(Date.class), | |
Mockito.any(StandbyGroup.class)); | |
Mockito.doReturn(resultExtend).when(planningController).calculateHolidayExtend(Mockito.any(), Mockito.any(), | |
Mockito.any()); | |
Mockito.doReturn(resultPreDraw).when(planningController).calculateHolidayPreDraw(Mockito.any(), | |
Mockito.any(), Mockito.any()); | |
// test success 01 - holiday extend | |
group.setExtendStandbyTime(true); | |
StandbyScheduleBody result = planningController.calculateHoliday(group, date, stbyBody, false); | |
assertNotNull(result); | |
assertTrue(result.getId() == 1); | |
// test success 02 - holiday pre draw | |
group.setExtendStandbyTime(false); | |
result = planningController.calculateHoliday(group, date, stbyBody, false); | |
assertTrue(result.getId() == 2); | |
assertNotNull(result); | |
// test success 03 - no holiday | |
Mockito.doReturn(false).when(planningController).isHoliday(Mockito.any(Date.class), | |
Mockito.any(StandbyGroup.class)); | |
result = planningController.calculateHoliday(group, date, stbyBody, false); | |
assertNotNull(result); | |
} catch (Exception e) { | |
assertNull(e); | |
} | |
} | |
@Test | |
public void calculateHolidayExtendTest() { | |
StandbyGroup group = new StandbyGroup(); | |
group.setExtendStandbyTime(false); | |
Date date = DateHelper.getDate(2018, 1, 1, 10, 0, 0); | |
StandbyScheduleBody stbyBody = new StandbyScheduleBody(); | |
StandbyDuration standbyDuration = new StandbyDuration(); | |
standbyDuration.setValidFrom(date); | |
standbyDuration.setValidFrom(DateHelper.addDaysToDate(date, 1)); | |
List<StandbyDuration> lsStandbyDurationsNull = new ArrayList<>(); | |
lsStandbyDurationsNull.add(null); | |
List<StandbyDuration> lsStandbyDurations = new ArrayList<>(); | |
StandbyDuration stbyDuration = new StandbyDuration(); | |
// after valid from of stbyBody | |
stbyDuration.setValidFrom(DateHelper.getDate(2018, 1, 1, 20, 0, 0)); | |
stbyDuration.setValidTo(DateHelper.getDate(2018, 1, 1, 22, 0, 0)); | |
lsStandbyDurations.add(stbyDuration); | |
stbyDuration = new StandbyDuration(); | |
// before valid from of stbyBody | |
stbyDuration.setValidFrom(DateHelper.getDate(2018, 1, 1, 8, 0, 0)); | |
stbyDuration.setValidTo(DateHelper.getDate(2018, 1, 1, 9, 0, 0)); | |
lsStandbyDurations.add(stbyDuration); | |
try { | |
StandbyScheduleBody result = null; | |
// success 01 - test null return date before valid from | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(null).when(planningController).getFittingDurationsOfGroup(Mockito.any(StandbyGroup.class), | |
Mockito.any(Date.class)); | |
result = planningController.calculateHolidayExtend(group, date, stbyBody); | |
assertNotNull(result); | |
// success 02 - test null return of list element | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(lsStandbyDurationsNull).when(planningController) | |
.getFittingDurationsOfGroup(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayExtend(group, date, stbyBody); | |
assertNotNull(result); | |
// success 03 - test null return of list element | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(lsStandbyDurations).when(planningController) | |
.getFittingDurationsOfGroup(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayExtend(group, date, stbyBody); | |
assertNotNull(result); | |
} catch (Exception e) { | |
LOGGER.error(e, e); | |
assertNull(e); | |
} | |
} | |
@Test | |
public void calculateHolidayPreDrawTest() { | |
StandbyGroup group = new StandbyGroup(); | |
Date date = DateHelper.getDate(2018, 1, 1, 10, 0, 0); | |
StandbyScheduleBody stbyBody = this.getStandbyScheduleBody(); | |
List<StandbyDuration> lsStandbyDurationsNull = new ArrayList<>(); | |
lsStandbyDurationsNull.add(null); | |
List<StandbyDuration> lsStandbyDurations = new ArrayList<>(); | |
StandbyDuration stbyDuration = new StandbyDuration(); | |
// after valid from of stbyBody | |
stbyDuration.setValidFrom(DateHelper.getDate(2018, 1, 1, 20, 0, 0)); | |
stbyDuration.setValidTo(DateHelper.getDate(2018, 1, 1, 22, 0, 0)); | |
lsStandbyDurations.add(stbyDuration); | |
stbyDuration = new StandbyDuration(); | |
// before valid from of stbyBody | |
stbyDuration.setValidFrom(DateHelper.getDate(2018, 1, 1, 8, 0, 0)); | |
stbyDuration.setValidTo(DateHelper.getDate(2018, 1, 1, 9, 0, 0)); | |
lsStandbyDurations.add(stbyDuration); | |
try { | |
StandbyScheduleBody result = null; | |
// success 01 - test null return date before valid from | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(null).when(planningController) | |
.getFittingDurationsByValidTo(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayPreDraw(group, date, stbyBody); | |
assertNotNull(result); | |
// success 02 - dur = null | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(lsStandbyDurationsNull).when(planningController) | |
.getFittingDurationsByValidTo(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayPreDraw(group, date, stbyBody); | |
assertNotNull(result); | |
// success 03 - duration before stbyBody | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(lsStandbyDurations).when(planningController) | |
.getFittingDurationsByValidTo(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayPreDraw(group, date, stbyBody); | |
assertNotNull(result); | |
// success 04 - duration after stbyBody | |
stbyBody = this.getStandbyScheduleBody(); | |
Mockito.doReturn(lsStandbyDurations).when(planningController) | |
.getFittingDurationsByValidTo(Mockito.any(StandbyGroup.class), Mockito.any(Date.class)); | |
result = planningController.calculateHolidayPreDraw(group, DateHelper.getDate(2018, 1, 1, 23, 0, 0), | |
stbyBody); | |
assertNotNull(result); | |
} catch (Exception e) { | |
LOGGER.error(e, e); | |
assertNull(e); | |
} | |
} | |
private StandbyScheduleBody getStandbyScheduleBody() { | |
StandbyScheduleBody stbyBody = new StandbyScheduleBody(); | |
stbyBody.setValidFrom(DateHelper.getDate(2018, 1, 1, 12, 0, 0)); | |
stbyBody.setValidTo(DateHelper.getDate(2018, 1, 1, 18, 0, 0)); | |
User user = new User(); | |
user.setFirstname("J."); | |
user.setLastname("Unit"); | |
stbyBody.setUser(user); | |
return stbyBody; | |
} | |
} |