ItEr21S10CUAltaCalendarioLaboral: Added unit tests for the new entities.
This commit is contained in:
parent
95e823af25
commit
6d326b8f91
3 changed files with 470 additions and 0 deletions
|
|
@ -0,0 +1,59 @@
|
|||
package org.navalplanner.business.test.calendars.daos;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.navalplanner.business.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_FILE;
|
||||
import static org.navalplanner.business.test.BusinessGlobalNames.BUSINESS_SPRING_CONFIG_TEST_FILE;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.navalplanner.business.calendars.daos.BaseCalendarDAO;
|
||||
import org.navalplanner.business.calendars.daos.IBaseCalendarDAO;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.navalplanner.business.test.calendars.entities.BaseCalendarTest;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* Tests for {@link BaseCalendarDAO}
|
||||
*
|
||||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations = { BUSINESS_SPRING_CONFIG_FILE,
|
||||
BUSINESS_SPRING_CONFIG_TEST_FILE })
|
||||
@Transactional
|
||||
public class BaseCalendarDAOTest {
|
||||
|
||||
@Autowired
|
||||
IBaseCalendarDAO baseCalendarDAO;
|
||||
|
||||
@Test
|
||||
public void saveBasicCalendar() {
|
||||
BaseCalendar calendar = BaseCalendarTest.createBasicCalendar();
|
||||
baseCalendarDAO.save(calendar);
|
||||
assertTrue(baseCalendarDAO.exists(calendar.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void saveBasicCalendarWithExceptionDay() {
|
||||
BaseCalendar calendar = BaseCalendarTest.createBasicCalendar();
|
||||
BaseCalendarTest.addChristmasAsExceptionDay(calendar);
|
||||
|
||||
baseCalendarDAO.save(calendar);
|
||||
assertTrue(baseCalendarDAO.exists(calendar.getId()));
|
||||
|
||||
try {
|
||||
BaseCalendar savedCalendar = baseCalendarDAO.find(calendar.getId());
|
||||
assertThat(savedCalendar.getExceptions().size(), equalTo(1));
|
||||
} catch (InstanceNotFoundException e) {
|
||||
fail("It should not throw an exception");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,382 @@
|
|||
package org.navalplanner.business.test.calendars.entities;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.junit.Test;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.calendars.entities.ExceptionDay;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
|
||||
/**
|
||||
* Tests for {@link BaseCalendar}.
|
||||
*
|
||||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
*/
|
||||
public class BaseCalendarTest {
|
||||
|
||||
public static final LocalDate MONDAY_LOCAL_DATE = new LocalDate(2009, 8, 10);
|
||||
public static final LocalDate TUESDAY_LOCAL_DATE = new LocalDate(2009, 8, 11);
|
||||
public static final LocalDate WEDNESDAY_LOCAL_DATE = new LocalDate(2009, 8, 12);
|
||||
public static final LocalDate THURSDAY_LOCAL_DATE = new LocalDate(2009, 8, 13);
|
||||
public static final LocalDate FRIDAY_LOCAL_DATE = new LocalDate(2009, 8, 14);
|
||||
public static final LocalDate SATURDAY_LOCAL_DATE = new LocalDate(2009, 8, 15);
|
||||
public static final LocalDate SUNDAY_LOCAL_DATE = new LocalDate(2009, 8, 16);
|
||||
|
||||
public static final LocalDate CHRISTMAS_DAY_LOCAL_DATE = new LocalDate(2009, 12,
|
||||
25);
|
||||
|
||||
public static BaseCalendar createBasicCalendar() {
|
||||
BaseCalendar calendar = BaseCalendar.create();
|
||||
|
||||
calendar.setName("Test");
|
||||
|
||||
calendar.setMonday(8);
|
||||
calendar.setTuesday(8);
|
||||
calendar.setWednesday(8);
|
||||
calendar.setThursday(8);
|
||||
calendar.setFriday(8);
|
||||
calendar.setSaturday(0);
|
||||
calendar.setSunday(0);
|
||||
|
||||
return calendar;
|
||||
}
|
||||
|
||||
public static void addChristmasAsExceptionDay(BaseCalendar calendar) {
|
||||
ExceptionDay christmasDay = ExceptionDay.create(CHRISTMAS_DAY_LOCAL_DATE, 0);
|
||||
|
||||
calendar.addExceptionDay(christmasDay);
|
||||
}
|
||||
|
||||
public static BaseCalendar createChristmasCalendar() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
addChristmasAsExceptionDay(calendar);
|
||||
return calendar;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValidCalendar() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
try {
|
||||
calendar.checkValid();
|
||||
} catch (ValidationException e) {
|
||||
fail("It should not throw an exception");
|
||||
}
|
||||
}
|
||||
|
||||
@Test(expected = ValidationException.class)
|
||||
public void testInvalidCalendar() throws ValidationException {
|
||||
BaseCalendar calendar = new BaseCalendar();
|
||||
calendar.checkValid();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursBasic() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
int wednesdayHours = calendar.getWorkableHours(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(wednesdayHours, equalTo(8));
|
||||
|
||||
int sundayHours = calendar.getWorkableHours(SUNDAY_LOCAL_DATE);
|
||||
assertThat(sundayHours, equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursChristmas() {
|
||||
BaseCalendar calendar = createChristmasCalendar();
|
||||
|
||||
int hours = calendar.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
assertThat(hours, equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDeriveCalendar() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
BaseCalendar derivedCalendar = calendar.newDerivedCalendar();
|
||||
|
||||
assertThat(derivedCalendar.getParent(), equalTo(calendar));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursDerivedBasicCalendar() {
|
||||
BaseCalendar calendar = createBasicCalendar().newDerivedCalendar();
|
||||
|
||||
int wednesdayHours = calendar.getWorkableHours(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(wednesdayHours, equalTo(8));
|
||||
|
||||
int sundayHours = calendar.getWorkableHours(SUNDAY_LOCAL_DATE);
|
||||
assertThat(sundayHours, equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursDerivedChristmasCalendar() {
|
||||
BaseCalendar calendar = createChristmasCalendar().newDerivedCalendar();
|
||||
|
||||
int hours = calendar.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
assertThat(hours, equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursDerivedBasicCalendarWithException() {
|
||||
BaseCalendar calendar = createBasicCalendar().newDerivedCalendar();
|
||||
|
||||
ExceptionDay day = ExceptionDay.create(WEDNESDAY_LOCAL_DATE, 4);
|
||||
calendar.addExceptionDay(day);
|
||||
|
||||
int mondayHours = calendar.getWorkableHours(MONDAY_LOCAL_DATE);
|
||||
assertThat(mondayHours, equalTo(8));
|
||||
|
||||
int wednesdayHours = calendar.getWorkableHours(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(wednesdayHours, equalTo(4));
|
||||
|
||||
int sundayHours = calendar.getWorkableHours(SUNDAY_LOCAL_DATE);
|
||||
assertThat(sundayHours, equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkableHoursDerivedChristmasCalendarRedefiningExceptionDay() {
|
||||
BaseCalendar calendar = createChristmasCalendar().newDerivedCalendar();
|
||||
|
||||
ExceptionDay day = ExceptionDay.create(CHRISTMAS_DAY_LOCAL_DATE, 4);
|
||||
calendar.addExceptionDay(day);
|
||||
|
||||
int hours = calendar.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
assertThat(hours, equalTo(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursInterval() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
int mondayToWednesdayHours = calendar.getWorkableHours(MONDAY_LOCAL_DATE,
|
||||
WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(mondayToWednesdayHours, equalTo(24));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursPerWeek() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
int weekHours = calendar.getWorkableHoursPerWeek(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(weekHours, equalTo(40));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testAddTwoExceptionDaysInTheSameDate() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
|
||||
ExceptionDay day = ExceptionDay.create(MONDAY_LOCAL_DATE, 8);
|
||||
calendar.addExceptionDay(day);
|
||||
|
||||
ExceptionDay day2 = ExceptionDay.create(MONDAY_LOCAL_DATE, 4);
|
||||
calendar.addExceptionDay(day2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreateNewVersion() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
BaseCalendar nextCalendar = calendar.newVersion();
|
||||
|
||||
assertThat(calendar, equalTo(nextCalendar.getPreviousCalendar()));
|
||||
assertThat(nextCalendar, equalTo(calendar.getNextCalendar()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursNewVersion() {
|
||||
BaseCalendar origCalendar = createBasicCalendar();
|
||||
BaseCalendar newCalendar = origCalendar.newVersion(
|
||||
MONDAY_LOCAL_DATE);
|
||||
|
||||
newCalendar.setWednesday(4);
|
||||
newCalendar.setSunday(4);
|
||||
|
||||
int wednesdayHours = newCalendar
|
||||
.getWorkableHours(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(wednesdayHours, equalTo(4));
|
||||
assertThat(wednesdayHours, equalTo(origCalendar
|
||||
.getWorkableHours(WEDNESDAY_LOCAL_DATE)));
|
||||
|
||||
int wednesdayHoursPastWeek = newCalendar
|
||||
.getWorkableHours(WEDNESDAY_LOCAL_DATE.minusWeeks(1));
|
||||
assertThat(wednesdayHoursPastWeek, equalTo(8));
|
||||
assertThat(wednesdayHoursPastWeek, equalTo(origCalendar
|
||||
.getWorkableHours(WEDNESDAY_LOCAL_DATE.minusWeeks(1))));
|
||||
|
||||
int sundayHours = newCalendar.getWorkableHours(SUNDAY_LOCAL_DATE);
|
||||
assertThat(sundayHours, equalTo(4));
|
||||
assertThat(sundayHours, equalTo(origCalendar
|
||||
.getWorkableHours(SUNDAY_LOCAL_DATE)));
|
||||
|
||||
int sundayHoursPastWeek = newCalendar
|
||||
.getWorkableHours(SUNDAY_LOCAL_DATE
|
||||
.minusWeeks(1));
|
||||
assertThat(sundayHoursPastWeek, equalTo(0));
|
||||
assertThat(sundayHoursPastWeek, equalTo(origCalendar
|
||||
.getWorkableHours(SUNDAY_LOCAL_DATE.minusWeeks(1))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursNewVersionCheckingLimits() {
|
||||
BaseCalendar origCalendar = createBasicCalendar();
|
||||
BaseCalendar newCalendar = origCalendar.newVersion(
|
||||
MONDAY_LOCAL_DATE);
|
||||
|
||||
newCalendar.setMonday(1);
|
||||
newCalendar.setSunday(2);
|
||||
|
||||
int mondayHours = newCalendar.getWorkableHours(MONDAY_LOCAL_DATE);
|
||||
assertThat(mondayHours, equalTo(1));
|
||||
assertThat(mondayHours, equalTo(origCalendar
|
||||
.getWorkableHours(MONDAY_LOCAL_DATE)));
|
||||
|
||||
int sundayHours = newCalendar.getWorkableHours(SUNDAY_LOCAL_DATE);
|
||||
assertThat(sundayHours, equalTo(2));
|
||||
assertThat(sundayHours, equalTo(origCalendar
|
||||
.getWorkableHours(SUNDAY_LOCAL_DATE)));
|
||||
|
||||
int mondayHoursPastWeek = newCalendar.getWorkableHours(MONDAY_LOCAL_DATE
|
||||
.minusWeeks(1));
|
||||
assertThat(mondayHoursPastWeek, equalTo(8));
|
||||
assertThat(mondayHoursPastWeek, equalTo(origCalendar
|
||||
.getWorkableHours(MONDAY_LOCAL_DATE.minusWeeks(1))));
|
||||
|
||||
int pastSundayHours = newCalendar.getWorkableHours(MONDAY_LOCAL_DATE
|
||||
.minusDays(1));
|
||||
assertThat(pastSundayHours, equalTo(0));
|
||||
assertThat(pastSundayHours, equalTo(origCalendar
|
||||
.getWorkableHours(MONDAY_LOCAL_DATE.minusDays(1))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveExceptionDay() {
|
||||
BaseCalendar calendar = createChristmasCalendar();
|
||||
|
||||
calendar.removeExceptionDay(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
|
||||
assertThat(calendar.getExceptions().size(), equalTo(0));
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void testRemoveExceptionDayDerivedCalendar() {
|
||||
BaseCalendar calendar = createChristmasCalendar().newDerivedCalendar();
|
||||
|
||||
calendar.removeExceptionDay(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveExceptionDayNewVersionCalendar() {
|
||||
BaseCalendar origCalendar = createChristmasCalendar();
|
||||
BaseCalendar newCalendar = origCalendar.newVersion(
|
||||
MONDAY_LOCAL_DATE);
|
||||
|
||||
newCalendar.removeExceptionDay(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
|
||||
assertThat(origCalendar.getExceptions().size(), equalTo(1));
|
||||
assertThat(newCalendar.getExceptions().size(), equalTo(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursNewVersionFromChristmasCalendar() {
|
||||
BaseCalendar origCalendar = createChristmasCalendar();
|
||||
ExceptionDay day = ExceptionDay.create(CHRISTMAS_DAY_LOCAL_DATE
|
||||
.plusYears(1), 0);
|
||||
origCalendar.addExceptionDay(day);
|
||||
|
||||
BaseCalendar newCalendar = origCalendar
|
||||
.newVersion(
|
||||
CHRISTMAS_DAY_LOCAL_DATE.plusDays(1));
|
||||
|
||||
newCalendar
|
||||
.updateExceptionDay(CHRISTMAS_DAY_LOCAL_DATE.plusYears(1), 8);
|
||||
|
||||
int christmasHours = newCalendar
|
||||
.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE
|
||||
.plusYears(1));
|
||||
assertThat(christmasHours, equalTo(8));
|
||||
|
||||
int christmasHoursPastYear = newCalendar
|
||||
.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
assertThat(christmasHoursPastYear, equalTo(0));
|
||||
}
|
||||
|
||||
public static void setHoursForAllDays(BaseCalendar calendar, Integer hours) {
|
||||
calendar.setMonday(hours);
|
||||
calendar.setTuesday(hours);
|
||||
calendar.setWednesday(hours);
|
||||
calendar.setThursday(hours);
|
||||
calendar.setFriday(hours);
|
||||
calendar.setSaturday(hours);
|
||||
calendar.setSunday(hours);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursTwoNewVersions() {
|
||||
BaseCalendar calendar = createBasicCalendar();
|
||||
setHoursForAllDays(calendar, 8);
|
||||
|
||||
BaseCalendar calendar2 = calendar.newVersion(TUESDAY_LOCAL_DATE);
|
||||
setHoursForAllDays(calendar2, 4);
|
||||
|
||||
BaseCalendar calendar3 = calendar2.newVersion(
|
||||
FRIDAY_LOCAL_DATE);
|
||||
setHoursForAllDays(calendar3, 2);
|
||||
|
||||
int hoursMonday = calendar.getWorkableHours(MONDAY_LOCAL_DATE);
|
||||
assertThat(hoursMonday, equalTo(8));
|
||||
assertThat(calendar2.getWorkableHours(MONDAY_LOCAL_DATE),
|
||||
equalTo(hoursMonday));
|
||||
assertThat(calendar3.getWorkableHours(MONDAY_LOCAL_DATE),
|
||||
equalTo(hoursMonday));
|
||||
|
||||
int hoursWednesday = calendar.getWorkableHours(WEDNESDAY_LOCAL_DATE);
|
||||
assertThat(hoursWednesday, equalTo(4));
|
||||
assertThat(calendar2.getWorkableHours(WEDNESDAY_LOCAL_DATE),
|
||||
equalTo(hoursWednesday));
|
||||
assertThat(calendar3.getWorkableHours(WEDNESDAY_LOCAL_DATE),
|
||||
equalTo(hoursWednesday));
|
||||
|
||||
int hoursFriday = calendar.getWorkableHours(FRIDAY_LOCAL_DATE);
|
||||
assertThat(hoursFriday, equalTo(2));
|
||||
assertThat(calendar2.getWorkableHours(FRIDAY_LOCAL_DATE),
|
||||
equalTo(hoursFriday));
|
||||
assertThat(calendar3.getWorkableHours(FRIDAY_LOCAL_DATE),
|
||||
equalTo(hoursFriday));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGettWorkableHoursDeriveAndNewVersion() {
|
||||
BaseCalendar baseCalendar = createChristmasCalendar();
|
||||
|
||||
BaseCalendar calendar = baseCalendar.newDerivedCalendar();
|
||||
setHoursForAllDays(calendar, 4);
|
||||
|
||||
BaseCalendar newCalendar = calendar.newVersion(WEDNESDAY_LOCAL_DATE);
|
||||
setHoursForAllDays(newCalendar, 2);
|
||||
|
||||
int hoursMonday = baseCalendar.getWorkableHours(MONDAY_LOCAL_DATE);
|
||||
assertThat(hoursMonday, equalTo(8));
|
||||
|
||||
hoursMonday = calendar.getWorkableHours(MONDAY_LOCAL_DATE);
|
||||
assertThat(hoursMonday, equalTo(4));
|
||||
assertThat(hoursMonday, equalTo(newCalendar
|
||||
.getWorkableHours(MONDAY_LOCAL_DATE)));
|
||||
|
||||
int hoursFriday = baseCalendar.getWorkableHours(FRIDAY_LOCAL_DATE);
|
||||
assertThat(hoursFriday, equalTo(8));
|
||||
|
||||
hoursFriday = calendar.getWorkableHours(FRIDAY_LOCAL_DATE);
|
||||
assertThat(hoursFriday, equalTo(2));
|
||||
assertThat(hoursFriday, equalTo(newCalendar
|
||||
.getWorkableHours(FRIDAY_LOCAL_DATE)));
|
||||
|
||||
int christmasHours = newCalendar
|
||||
.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE);
|
||||
assertThat(christmasHours, equalTo(0));
|
||||
assertThat(christmasHours, equalTo(calendar
|
||||
.getWorkableHours(CHRISTMAS_DAY_LOCAL_DATE)));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
package org.navalplanner.business.test.calendars.entities;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.junit.Test;
|
||||
import org.navalplanner.business.calendars.entities.ExceptionDay;
|
||||
|
||||
/**
|
||||
* Tests for {@link ExceptionDay}.
|
||||
*
|
||||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
*/
|
||||
public class ExceptionDayTest {
|
||||
|
||||
@Test
|
||||
public void testCreateExceptionDayWithDate() {
|
||||
Date date = new Date();
|
||||
|
||||
ExceptionDay day = ExceptionDay.create(date, 8);
|
||||
|
||||
assertThat(day.getDate(), equalTo(new LocalDate(date)));
|
||||
assertThat(day.getHours(), equalTo(8));
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue