package com.constellio.app.modules.tasks.extensions; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import java.util.List; import org.joda.time.LocalDate; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.tasks.model.wrappers.Task; import com.constellio.app.modules.tasks.model.wrappers.structures.TaskReminder; import com.constellio.app.modules.tasks.services.TasksSchemasRecordsServices; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.records.RecordServicesException; import com.constellio.sdk.tests.ConstellioTest; import com.constellio.sdk.tests.setups.Users; public class TaskSchemasExtensionTestUpdateRemindersStatusAcceptanceTest extends ConstellioTest { Users users = new Users(); RecordServices recordServices; private LocalDate now = LocalDate.now(); private LocalDate oldStartDate; private LocalDate newStartDate; private LocalDate oldDueDate; private LocalDate newDueDate; private Task zeTask; private TasksSchemasRecordsServices tasksSchemas; private TaskReminder reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0; private TaskReminder reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1; private TaskReminder reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2; private TaskReminder reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3; private TaskReminder reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4; private TaskReminder reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5; private TaskReminder processedReminderWithFixedDate_6; private TaskReminder notProcessedReminderWithFixedDate_7; @Before public void setUp() throws Exception { givenTimeIs(now); prepareSystem(withZeCollection().withTasksModule().withAllTest(users)); recordServices = getModelLayerFactory().newRecordServices(); tasksSchemas = new TasksSchemasRecordsServices(zeCollection, getAppLayerFactory()); initTestData(); } private void initTestData() throws RecordServicesException { oldDueDate = now.minusDays(2); oldStartDate = now.minusDays(2); newStartDate = newDueDate = now.plusDays(2); zeTask = tasksSchemas.newTask(); reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0 = new TaskReminder() .setBeforeRelativeDate(true).setRelativeDateMetadataCode(Task.START_DATE).setNumberOfDaysToRelativeDate(3) .setProcessed(true); reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1 = new TaskReminder() .setBeforeRelativeDate(true).setRelativeDateMetadataCode(Task.START_DATE).setNumberOfDaysToRelativeDate(1) .setProcessed(true); reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2 = new TaskReminder() .setBeforeRelativeDate(false).setRelativeDateMetadataCode(Task.START_DATE).setNumberOfDaysToRelativeDate(3) .setProcessed(false); reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3 = new TaskReminder() .setBeforeRelativeDate(true).setRelativeDateMetadataCode(Task.DUE_DATE).setNumberOfDaysToRelativeDate(3) .setProcessed(true); reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4 = new TaskReminder() .setBeforeRelativeDate(true).setRelativeDateMetadataCode(Task.DUE_DATE).setNumberOfDaysToRelativeDate(1) .setProcessed(true); reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5 = new TaskReminder() .setBeforeRelativeDate(false).setRelativeDateMetadataCode(Task.DUE_DATE).setNumberOfDaysToRelativeDate(3) .setProcessed(false); processedReminderWithFixedDate_6 = new TaskReminder().setFixedDate(now).setProcessed(true); //voulu: notProcessedReminderWithFixedDate_7 = new TaskReminder().setFixedDate(now.minusDays(1)).setProcessed(false); recordServices.add(zeTask.setTitle("zeTaskTilte").setStartDate(oldStartDate).setDueDate(oldDueDate) .setReminders(asList(reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0, reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1, reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2, reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3, reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4, reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5, processedReminderWithFixedDate_6, notProcessedReminderWithFixedDate_7 ))); } @Test public void whenStartDateSetToNewStartDateThenRemindersSetCorrectly() throws RecordServicesException { recordServices.add(zeTask.setStartDate(newStartDate)); zeTask = reloadTask(zeTask.getId()); reloadRemindersFromTask(zeTask); assertThat(reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0.isProcessed()).isTrue(); assertThat(reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1.isProcessed()) .isFalse(); assertThat(reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2.isProcessed()) .isFalse(); assertThat(reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3.isProcessed()).isTrue(); assertThat(reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4.isProcessed()) .isTrue(); assertThat(reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5.isProcessed()) .isFalse(); assertThat(processedReminderWithFixedDate_6.isProcessed()).isTrue(); assertThat(notProcessedReminderWithFixedDate_7.isProcessed()) .isFalse(); } @Test public void whenDueDateSetToNewDueDateThenRemindersSetCorrectly() throws Exception { recordServices.add(zeTask.setDueDate(newDueDate)); zeTask = reloadTask(zeTask.getId()); reloadRemindersFromTask(zeTask); assertThat(reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0.isProcessed()).isTrue(); assertThat(reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1.isProcessed()) .isTrue(); assertThat(reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2.isProcessed()) .isFalse(); assertThat(reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3.isProcessed()).isTrue(); assertThat(reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4.isProcessed()) .isFalse(); assertThat(reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5.isProcessed()) .isFalse(); assertThat(processedReminderWithFixedDate_6.isProcessed()).isTrue(); assertThat(notProcessedReminderWithFixedDate_7.isProcessed()) .isFalse(); } private void reloadRemindersFromTask(Task zeTask) { List<TaskReminder> reminders = zeTask.getReminders(); reminderWithRelativeToStartDateProcessedWithOldStartDateAndProcessedWithNewStartDate_0 = reminders.get(0); reminderWithRelativeToStartDateProcessedWithOldStartDateAndNotProcessedWithNewStartDate_1 = reminders.get(1); reminderWithRelativeToStartDateNotProcessedWithOldStartDateAndNotProcessedWithNewStartDate_2 = reminders.get(2); reminderWithRelativeToDueDateProcessedWithOldDueDateAndProcessedWithNewDueDate_3 = reminders.get(3); reminderWithRelativeToDueDateProcessedWithOldDueDateAndNotProcessedWithNewDueDate_4 = reminders.get(4); reminderWithRelativeToDueDateNotProcessedWithOldDueDateAndNotProcessedWithNewDueDate_5 = reminders.get(5); processedReminderWithFixedDate_6 = reminders.get(6); notProcessedReminderWithFixedDate_7 = reminders.get(7); } private Task reloadTask(String id) { return tasksSchemas.wrapTask(recordServices.getDocumentById(id)); } }