package com.constellio.app.modules.rm.model.calculators; import static com.constellio.app.modules.rm.model.calculators.CalculatorUtils.getSmallestDate; import static com.constellio.app.modules.rm.model.calculators.CalculatorUtils.toNextEndOfYearDate; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import org.joda.time.LocalDate; import org.junit.Test; public class CalculatorUtilsTest { @Test public void whenGetNextEndOfYearDateThenBasedOnYearEndAndRequiredPeriod() throws Exception { assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 1, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 1, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 0, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 0, true)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2013, 4, 1), "04/30", 30, false)).isEqualTo(new LocalDate(2014, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2013, 4, 1), "04/30", 30, true)).isEqualTo(new LocalDate(2014, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 3, 30), "04/30", 30, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 3, 30), "04/30", 30, true)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 3, 31), "04/30", 30, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 3, 31), "04/30", 30, true)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 29), "04/30", 30, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 29), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 30, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 30), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 1), "04/30", 30, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 1), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 29, false)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 29, true)).isEqualTo(new LocalDate(2012, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 2), "04/30", 29, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 2), "04/30", 29, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, false)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "04/30", 30, true)).isEqualTo(new LocalDate(2013, 4, 30)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "05/31", 30, false)).isEqualTo(new LocalDate(2012, 5, 31)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 4, 1), "05/31", 30, true)).isEqualTo(new LocalDate(2012, 5, 31)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 1), "05/31", 30, false)).isEqualTo(new LocalDate(2012, 5, 31)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 1), "05/31", 30, true)).isEqualTo(new LocalDate(2012, 5, 31)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 2), "05/31", 30, false)).isEqualTo(new LocalDate(2013, 5, 31)); assertThat(toNextEndOfYearDate(new LocalDate(2012, 5, 2), "05/31", 30, true)).isEqualTo(new LocalDate(2013, 5, 31)); assertThat(toNextEndOfYearDate(null, "05/31", 30, false)).isNull(); assertThat(toNextEndOfYearDate(null, "05/31", 30, true)).isNull(); } @Test public void whenTestGetSmallestDateThenReturnSmallestNonNullDate() throws Exception { assertThat(getSmallestDate(asList(new LocalDate(2012, 4, 1)))).isEqualTo(new LocalDate(2012, 4, 1)); assertThat(getSmallestDate(asList(null, new LocalDate(2012, 4, 1), null))).isEqualTo(new LocalDate(2012, 4, 1)); assertThat(getSmallestDate(asList(new LocalDate(2012, 4, 1), new LocalDate(2012, 4, 1)))).isEqualTo( new LocalDate(2012, 4, 1)); assertThat(getSmallestDate(asList(new LocalDate(2012, 7, 2), new LocalDate(2012, 7, 1)))).isEqualTo( new LocalDate(2012, 7, 1)); assertThat(getSmallestDate(asList(new LocalDate(2012, 7, 1), new LocalDate(2012, 7, 2)))).isEqualTo( new LocalDate(2012, 7, 1)); } }