ItEr23S08CUEdicionCalendarioLaboral: Not allow add and remove extensions in the past.

This commit is contained in:
Manuel Rego Casasnovas 2009-08-27 20:07:34 +02:00 committed by Óscar González Fernández
parent ab36890da5
commit 4e4c797327
2 changed files with 48 additions and 12 deletions

View file

@ -194,6 +194,11 @@ public class BaseCalendar extends BaseEntity implements IValidable {
public void addExceptionDay(ExceptionDay day)
throws IllegalArgumentException {
if (day.getDate().compareTo(new LocalDate()) <= 0) {
throw new IllegalArgumentException(
"You can not modify the past adding a new exception day");
}
if (shouldUsePreviousCalendar(day.getDate())) {
previousCalendar.addExceptionDay(day);
} else if (shouldUseNextCalendar(day.getDate())) {
@ -214,6 +219,11 @@ public class BaseCalendar extends BaseEntity implements IValidable {
public void removeExceptionDay(LocalDate date)
throws IllegalArgumentException {
if (date.compareTo(new LocalDate()) <= 0) {
throw new IllegalArgumentException(
"You can not modify the past removing an exception day");
}
if (shouldUsePreviousCalendar(date)) {
previousCalendar.removeExceptionDay(date);
} else if (shouldUseNextCalendar(date)) {

View file

@ -22,17 +22,24 @@ import org.navalplanner.business.common.exceptions.ValidationException;
*/
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 JUNE_NEXT_YEAR = new LocalDate(
(new LocalDate())
.getYear(), 6, 1).plusYears(1);
public static final LocalDate MONDAY_LOCAL_DATE = JUNE_NEXT_YEAR
.dayOfWeek().withMinimumValue();
public static final LocalDate TUESDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(1);
public static final LocalDate WEDNESDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(2);
public static final LocalDate THURSDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(3);
public static final LocalDate FRIDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(4);
public static final LocalDate SATURDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(5);
public static final LocalDate SUNDAY_LOCAL_DATE = MONDAY_LOCAL_DATE
.plusDays(6);
private static final LocalDate[] DAYS_OF_A_WEEK_EXAMPLE = {
MONDAY_LOCAL_DATE, TUESDAY_LOCAL_DATE, WEDNESDAY_LOCAL_DATE,
@ -40,7 +47,7 @@ public class BaseCalendarTest {
SUNDAY_LOCAL_DATE };
public static final LocalDate CHRISTMAS_DAY_LOCAL_DATE = new LocalDate(
2009, 12, 25);
JUNE_NEXT_YEAR.getYear(), 12, 25);
public static BaseCalendar createBasicCalendar() {
BaseCalendar calendar = BaseCalendar.create();
@ -602,4 +609,23 @@ public class BaseCalendarTest {
equalTo(lastVersion));
}
@Test(expected = IllegalArgumentException.class)
public void testNotAllowCreateExceptionsInThePast() {
BaseCalendar calendar = createBasicCalendar();
LocalDate pastMonth = (new LocalDate()).minusMonths(1);
ExceptionDay exceptionDay = ExceptionDay.create(pastMonth, 0);
calendar.addExceptionDay(exceptionDay);
}
@Test(expected = IllegalArgumentException.class)
public void testNotAllowRemoveExceptionsInThePast() {
BaseCalendar calendar = createBasicCalendar();
LocalDate pastMonth = (new LocalDate()).minusMonths(1);
calendar.removeExceptionDay(pastMonth);
}
}