package com.constellio.app.modules.rm.model.validators;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.Schemas;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.records.RecordServicesException;
import com.constellio.model.services.search.SearchServices;
import com.constellio.sdk.tests.ConstellioTest;
import org.joda.time.LocalDate;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import org.junit.Before;
import org.junit.Test;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.from;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Created by constellios on 2017-04-06.
*/
public class FolderValidatorAcceptanceTest extends ConstellioTest {
public static final LocalDate DEFAULT_OPENING_DATE = new LocalDate(2001,01,05);
public static final LocalDate CLOSING_DATE_ENTERED_BEFORE = new LocalDate(2001,01,04);
public static final String FOLDER_TITLE = "FolderTest";
public static final String FOLDER_ID = "folderTest";
RMTestRecords records = new RMTestRecords(zeCollection);
RMSchemasRecordsServices rm;
RecordServices recordServices;
SearchServices searchServices;
@Before
public void setUp() {
givenBackgroundThreadsEnabled();
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers()
.withRMTest(records).withFoldersAndContainersOfEveryStatus().withDocumentsDecommissioningList()
);
rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
recordServices = getModelLayerFactory().newRecordServices();
searchServices = getModelLayerFactory().newSearchServices();
}
@Test(expected = RecordServicesException.ValidationException.class)
public void testSmallerOpeningDateThanEndingDateThenThrowException() throws RecordServicesException {
Folder folder = buildDefaultFolder().setCloseDateEntered(CLOSING_DATE_ENTERED_BEFORE);
recordServices.add(folder.getWrappedRecord());
}
// @Test
// public void testGreaterOpingDateThanEndingDateThenOk() throws RecordServicesException {
// Folder folder = buildDefaultFolder().setCloseDateEntered(DEFAULT_OPENING_DATE);
//
// recordServices.add(folder.getWrappedRecord());
// getModelLayerFactory().getBatchProcessesManager().waitUntilAllFinished();
// Record record = searchServices.searchSingleResult(from(rm.folder.schemaType()).where(Schemas.IDENTIFIER).isEqualTo(FOLDER_ID));
//
// assertThat(rm.wrapFolder(record).getCloseDateEntered()).isEqualTo(DEFAULT_OPENING_DATE);
// assertThat(rm.wrapFolder(record).getOpeningDate()).isEqualTo(DEFAULT_OPENING_DATE);
// assertThat(rm.wrapFolder(record).getTitle()).isEqualTo(FOLDER_TITLE);
// }
public Folder buildDefaultFolder() {
return rm.newFolderWithId(FOLDER_ID).setTitle(FOLDER_TITLE).setAdministrativeUnitEntered(records.getUnit10())
.setRetentionRuleEntered(records.getRule1()).setOpenDate(DEFAULT_OPENING_DATE).setCategoryEntered(records.categoryId_X);
}
}