package com.constellio.app.modules.rm.model;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.Arrays;
import org.junit.Before;
import org.junit.Test;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.constants.RMTaxonomies;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.wrappers.Email;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.model.entities.records.Transaction;
import com.constellio.model.services.records.RecordServices;
import com.constellio.sdk.tests.ConstellioTest;
public class EmailAcceptanceTest extends ConstellioTest {
RMSchemasRecordsServices rm;
RMTestRecords records = new RMTestRecords(zeCollection);
RecordServices recordServices;
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withConstellioRMModule().withRMTest(records)
.withFoldersAndContainersOfEveryStatus()
);
assertThat(getModelLayerFactory().getTaxonomiesManager().getPrincipalTaxonomy(zeCollection).getCode())
.isEqualTo(RMTaxonomies.ADMINISTRATIVE_UNITS);
rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
recordServices = getModelLayerFactory().newRecordServices();
}
@Test
public void whenCreatingAnEmailWithoutDescriptionThenOK()
throws Exception {
Email email = rm.newEmail();
email.setTitle("My email").setDescription("test").setFolder(records.folder_A03);
email.setEmailTo(Arrays.asList("dest1", "dest2"));
recordServices.add(email);
email.setDescription(null).setTitle("Z");
recordServices.update(email);
assertThat(email.getEmailTo()).containsOnly("dest1", "dest2");
}
@Test
public void givenEmailThenInheritFolderMetadatas()
throws Exception {
Email email = rm.newEmail();
email.setTitle("My email").setDescription("test").setFolder(records.folder_A03);
email.setEmailTo(Arrays.asList("dest1", "dest2"));
recordServices.add(email);
assertThat(email.getFolderAdministrativeUnit()).isEqualTo(records.unitId_10a);
assertThat(email.getFolderCategory()).isEqualTo(records.categoryId_X110);
Folder folder = records.getFolder_A03()
.setCategoryEntered(records.categoryId_X13)
.setAdministrativeUnitEntered(records.unitId_11b);
recordServices.execute(new Transaction(folder.getWrappedRecord()));
waitForBatchProcess();
recordServices.refresh(email);
assertThat(email.getFolderAdministrativeUnit()).isEqualTo(records.unitId_11b);
assertThat(email.getFolderCategory()).isEqualTo(records.categoryId_X13);
}
}