package com.constellio.model.entities.calculators.dependencies;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.ArrayList;
import java.util.List;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.junit.Test;
import org.mockito.Mock;
import com.constellio.model.entities.calculators.DynamicDependencyValues;
import com.constellio.model.entities.schemas.Metadata;
public class DynamicLocalDependencyTest {
DynamicLocalDependency dynamicLocalDependency = new DynamicLocalDependency() {
@Override
public boolean isDependentOf(Metadata metadata) {
return true;
}
};
@Mock
private DynamicDependencyValues values = mock(DynamicDependencyValues.class);
@Test
public void givenStringMetadataWhenGetDateThanOk()
throws Exception {
String zMeta = "zMeta";
when(values.getValue(zMeta)).thenReturn("2000-2010");
LocalDate date = dynamicLocalDependency.getDate(zMeta, values, "1/12", true);
assertThat(date).isEqualTo(new LocalDate(2000, 1, 12));
}
@Test
public void givenNumberMetadataWhenGetDateThanOk()
throws Exception {
String zMeta = "zMeta";
Number number = 1985.5;
when(values.getValue(zMeta)).thenReturn(number);
LocalDate date = dynamicLocalDependency.getDate(zMeta, values, "02/28", true);
assertThat(date).isEqualTo(new LocalDate(1985, 2, 28));
}
@Test
public void givenDateMetadataWhenGetDateThanOk()
throws Exception {
String zMeta = "zMeta";
LocalDate date = new LocalDate(1980, 10, 11);
when(values.getValue(zMeta)).thenReturn(date);
assertThat(dynamicLocalDependency.getDate(zMeta, values, "02/28", true)).isEqualTo(date);
}
@Test
public void givenDatetimeMetadataWhenGetDateThanOk()
throws Exception {
String zMeta = "zMeta";
LocalDateTime date = new LocalDateTime();
when(values.getValue(zMeta)).thenReturn(date);
assertThat(dynamicLocalDependency.getDate(zMeta, values, "02/28", true)).isEqualTo(date.toLocalDate());
}
@Test
public void givenListMetadataWhenGetDateThanReturnFirstValue()
throws Exception {
String zMeta = "zMeta";
List<Object> listOfObjects = new ArrayList();
listOfObjects.add("2000-2010");
listOfObjects.add(new LocalDate(1980, 10, 11));
when(values.getValue(zMeta)).thenReturn(listOfObjects);
assertThat(dynamicLocalDependency.getDate(zMeta, values, "1/12", true)).isEqualTo(new LocalDate(2000, 1, 12));
}
@Test
public void givenBasedOnFirstPartOfTimerangesThenOK()
throws Exception {
String zMeta = "zMeta";
when(values.getValue(zMeta)).thenReturn("2000-2010");
assertThat(dynamicLocalDependency.getDate(zMeta, values, "1/12", true)).isEqualTo(new LocalDate(2000, 1, 12));
}
@Test
public void givenBasedOnLastPartOfTimerangesThenOK()
throws Exception {
String zMeta = "zMeta";
when(values.getValue(zMeta)).thenReturn("2000-2010");
assertThat(dynamicLocalDependency.getDate(zMeta, values, "1/12", false)).isEqualTo(new LocalDate(2010, 1, 12));
}
}