package com.constellio.app.modules.tasks.model.wrappers.structures; import com.constellio.app.modules.tasks.model.wrappers.Task; import com.constellio.sdk.tests.ConstellioTest; import org.joda.time.LocalDate; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; public class TaskReminderTest extends ConstellioTest { @Mock Task zeTask; private LocalDate startDate = LocalDate.now(); @Before public void setUp() throws Exception { givenTimeIs(startDate); when(zeTask.get(Task.START_DATE)).thenReturn(startDate); } @Test public void givenReminderWithFixedDateWhenComputeDateThenReturnFixedDate() throws Exception { LocalDate startDatePlus1 = startDate.plusDays(1); TaskReminder taskReminder = new TaskReminder().setFixedDate(startDatePlus1); assertThat(taskReminder.computeDate(zeTask)).isEqualTo(startDatePlus1); } @Test public void givenReminderWithRelativeDate2DaysBeforeStartDateWhenComputeDateThenReturn2DaysBeforeStartDate() throws Exception { TaskReminder taskReminder = new TaskReminder().setBeforeRelativeDate(true).setNumberOfDaysToRelativeDate(2) .setRelativeDateMetadataCode(Task.START_DATE); assertThat(taskReminder.computeDate(zeTask)).isEqualTo(startDate.minusDays(2)); } @Test public void givenReminderWithRelativeDate0DaysBeforeStartDateWhenComputeDateThenReturnStartDate() throws Exception { TaskReminder taskReminder = new TaskReminder().setBeforeRelativeDate(true).setNumberOfDaysToRelativeDate(0) .setRelativeDateMetadataCode(Task.START_DATE); assertThat(taskReminder.computeDate(zeTask)).isEqualTo(startDate); } @Test public void givenReminderWithRelativeDate2DaysAfterStartDateWhenComputeDateThenReturn2AfterBeforeStartDate() throws Exception { TaskReminder taskReminder = new TaskReminder().setBeforeRelativeDate(false).setNumberOfDaysToRelativeDate(2) .setRelativeDateMetadataCode(Task.START_DATE); assertThat(taskReminder.computeDate(zeTask)).isEqualTo(startDate.plusDays(2)); } @Test public void givenReminderWithRelativeDate0DaysAfterStartDateWhenComputeDateThenReturnStartDate() throws Exception { TaskReminder taskReminder = new TaskReminder().setBeforeRelativeDate(false).setNumberOfDaysToRelativeDate(0) .setRelativeDateMetadataCode(Task.START_DATE); assertThat(taskReminder.computeDate(zeTask)).isEqualTo(startDate); } @Test public void givenRelativeDateSetToTaskStartDateLocaleCodeWhenIsRelativeToStartDateThenReturnTrue() throws Exception { TaskReminder taskReminder = new TaskReminder().setRelativeDateMetadataCode(Task.START_DATE); assertThat(taskReminder.isRelativeToStartDate()).isTrue(); assertThat(taskReminder.isRelativeToDueDate()).isFalse(); } @Test public void givenRelativeDateSetToTaskStartDateCodeWhenIsRelativeToStartDateThenReturnTrue() throws Exception { TaskReminder taskReminder = new TaskReminder().setRelativeDateMetadataCode(Task.DEFAULT_SCHEMA + "_" + Task.START_DATE); assertThat(taskReminder.isRelativeToStartDate()).isTrue(); assertThat(taskReminder.isRelativeToDueDate()).isFalse(); } @Test public void givenRelativeDateSetToNullWhenIsRelativeToStartDateThenReturnFalse() throws Exception { TaskReminder taskReminder = new TaskReminder(); assertThat(taskReminder.isRelativeToStartDate()).isFalse(); assertThat(taskReminder.isRelativeToDueDate()).isFalse(); } @Test public void givenRelativeDateSetToTaskEndDateLocaleCodeWhenIsRelativeToEndDateThenReturnTrue() throws Exception { TaskReminder taskReminder = new TaskReminder().setRelativeDateMetadataCode(Task.DUE_DATE); assertThat(taskReminder.isRelativeToDueDate()).isTrue(); assertThat(taskReminder.isRelativeToStartDate()).isFalse(); } @Test public void givenRelativeDateSetToTaskEndDateCodeWhenIsRelativeToEndDateThenReturnTrue() throws Exception { TaskReminder taskReminder = new TaskReminder().setRelativeDateMetadataCode(Task.DEFAULT_SCHEMA + "_" + Task.DUE_DATE); assertThat(taskReminder.isRelativeToDueDate()).isTrue(); assertThat(taskReminder.isRelativeToStartDate()).isFalse(); } @Test public void givenRelativeDateSetToNullWhenIsRelativeToEndDateThenReturnFalse() throws Exception { TaskReminder taskReminder = new TaskReminder(); assertThat(taskReminder.isRelativeToDueDate()).isFalse(); assertThat(taskReminder.isRelativeToStartDate()).isFalse(); } }