package com.constellio.app.modules.rm.extensions;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.model.enums.FolderMediaType;
import com.constellio.app.modules.rm.model.enums.FolderStatus;
import com.constellio.app.modules.rm.services.RMSchemasRecordsServices;
import com.constellio.app.modules.rm.services.borrowingServices.BorrowingType;
import com.constellio.app.modules.rm.wrappers.ContainerRecord;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.app.modules.rm.wrappers.RMTask;
import com.constellio.app.modules.tasks.model.wrappers.request.RequestTask;
import com.constellio.app.modules.tasks.services.TasksSchemasRecordsServices;
import com.constellio.app.ui.pages.base.SessionContext;
import com.constellio.data.utils.TimeProvider;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.records.wrappers.EmailToSend;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.structures.EmailAddress;
import com.constellio.model.services.records.RecordPhysicalDeleteOptions;
import com.constellio.model.services.records.RecordServices;
import com.constellio.model.services.records.RecordServicesException;
import com.constellio.model.services.search.query.logical.condition.LogicalSearchCondition;
import com.constellio.model.services.users.UserServices;
import com.constellio.sdk.tests.ConstellioTest;
import com.constellio.sdk.tests.FakeSessionContext;
import com.constellio.sdk.tests.setups.Users;
import org.joda.time.LocalDate;
import org.joda.time.LocalDateTime;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import static com.constellio.app.modules.rm.RMEmailTemplateConstants.*;
import static com.constellio.model.services.search.query.logical.LogicalSearchQueryOperators.*;
import static com.constellio.sdk.tests.TestUtils.asList;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
/**
* Created by Constellio on 2017-04-03.
*/
public class RMRequestTaskApprovedExtensionAcceptanceTest extends ConstellioTest {
@Mock RMRequestTaskApprovedExtension extension;
private SessionContext sessionContext;
private RecordServices recordServices;
private RMSchemasRecordsServices rm;
private TasksSchemasRecordsServices taskSchemas;
RMTestRecords records = new RMTestRecords(zeCollection);
LocalDateTime localDateTime;
LocalDate localDate;
Users users = new Users();
@Before
public void setup() {
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records)
.withFoldersAndContainersOfEveryStatus().withAllTestUsers()
);
givenTimeIs(LocalDateTime.now());
localDateTime = TimeProvider.getLocalDateTime();
localDate = TimeProvider.getLocalDate();
extension = spy(new RMRequestTaskApprovedExtension(zeCollection, getAppLayerFactory()));
rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory());
taskSchemas = new TasksSchemasRecordsServices(zeCollection, getAppLayerFactory());
users.setUp(new UserServices(getModelLayerFactory()));
sessionContext = FakeSessionContext.adminInCollection(zeCollection);
sessionContext.setCurrentLocale(Locale.FRENCH);
recordServices = getModelLayerFactory().newRecordServices();
}
@Test
public void givenBorrowRequestCompletedAndApprovedThenBorrowFolder() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, 7, records.getFolder_A42().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
recordServices.physicallyDeleteNoMatterTheStatus(records.getList10().getWrappedRecord(), User.GOD, new RecordPhysicalDeleteOptions());
recordServices.physicallyDeleteNoMatterTheStatus(records.getList17().getWrappedRecord(), User.GOD, new RecordPhysicalDeleteOptions());
recordServices.physicallyDeleteNoMatterTheStatus(records.getList01().getWrappedRecord(), User.GOD, new RecordPhysicalDeleteOptions());
extension.completeBorrowRequest(task, true);
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
assertThat(folder.getBorrowUser()).isEqualTo(records.getChuckNorris().getId());
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande d'emprunt du dossier: Crocodile");
assertThat(emailToSend.getParameters()).hasSize(11);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"borrowingDate:" + localDate, "returnDate:" + folder.getBorrowPreviewReturnDate(),
"currentUser:admin", "borrowingType:" + BorrowingType.BORROW,
"borrowerEntered:chuck", "title:" + folder.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Oui"
);
}
@Test
public void givenBorrowRequestCompletedAndDeniedThenDoNotBorrowFolder() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, 7, records.getFolder_A42().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
extension.completeBorrowRequest(task, false);
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isNull();
assertThat(folder.getBorrowUser()).isNull();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande d'emprunt du dossier: Crocodile");
assertThat(emailToSend.getParameters()).hasSize(11);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"borrowingDate:" + localDate, "returnDate:" + LocalDate.now().plusDays(7),
"currentUser:admin", "borrowingType:" + BorrowingType.BORROW,
"borrowerEntered:chuck", "title:" + folder.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Non"
);
}
@Test
public void givenBorrowRequestCompletedAndApprovedThenBorrowContainer() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, 7, records.getContainerBac13().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
extension.completeBorrowRequest(task, true);
ContainerRecord container = records.getContainerBac13();
assertThat(container.getBorrowed()).isTrue();
assertThat(container.getBorrower()).isEqualTo(records.getChuckNorris().getId());
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(11);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"borrowingDate:" + localDate, "returnDate:" + container.getPlanifiedReturnDate(),
"currentUser:admin", "borrowingType:" + BorrowingType.BORROW,
"borrowerEntered:chuck", "title:" + container.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + container.getId(),
"recordType:containerrecord",
"isAccepted:Oui"
);
}
@Test
public void givenBorrowRequestCompletedAndDeniedThenDoNotBorrowContainer() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, 7, records.getContainerBac13().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
extension.completeBorrowRequest(task, false);
ContainerRecord container = records.getContainerBac13();
assertThat(container.getBorrowed()).isNull();
assertThat(container.getBorrower()).isNull();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(11);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"borrowingDate:" + localDate, "returnDate:" + LocalDate.now().plusDays(7),
"currentUser:admin", "borrowingType:" + BorrowingType.BORROW,
"borrowerEntered:chuck", "title:" + container.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + container.getId(),
"recordType:containerrecord",
"isAccepted:Non"
);
}
@Test
public void givenReturnRequestCompletedAndApprovedThenReturnFolder() throws RecordServicesException {
recordServices.update(records.getFolder_A42().setBorrowed(true).setBorrowUser(records.getChuckNorris().getId()));
RMTask task = rm.wrapRMTask(taskSchemas.newReturnFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
extension.completeReturnRequest(task, true);
folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isNull();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_RETURNED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_RETURNED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande de retour du dossier: Crocodile");
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + localDate,
"title:" + folder.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Oui"
);
}
@Test
public void givenReturnRequestCompletedAndDeniedThenDoNotReturnFolder() throws RecordServicesException {
recordServices.update(records.getFolder_A42().setBorrowed(true).setBorrowUser(records.getChuckNorris().getId()));
RMTask task = rm.wrapRMTask(taskSchemas.newReturnFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
extension.completeReturnRequest(task, false);
folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_RETURNED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_RETURNED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande de retour du dossier: Crocodile");
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + localDate,
"title:" + folder.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Non"
);
}
@Test
public void givenReturnRequestCompletedAndApprovedThenReturnContainer() throws RecordServicesException {
recordServices.update(records.getContainerBac13().setBorrowed(true).setBorrower(records.getChuckNorris().getId()));
RMTask task = rm.wrapRMTask(taskSchemas.newReturnContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
ContainerRecord container = records.getContainerBac13();
assertThat(container.getBorrowed()).isTrue();
extension.completeReturnRequest(task, true);
container = records.getContainerBac13();
assertThat(container.getBorrowed()).isNull();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_RETURNED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_RETURNED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + localDate,
"title:" + container.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + container.getId(),
"recordType:containerrecord",
"isAccepted:Oui"
);
}
@Test
public void givenReturnRequestCompletedAndDeniedThenDoNotReturnContainer() throws RecordServicesException {
recordServices.update(records.getContainerBac13().setBorrowed(true).setBorrower(records.getChuckNorris().getId()));
RMTask task = rm.wrapRMTask(taskSchemas.newReturnContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
ContainerRecord container = records.getContainerBac13();
assertThat(container.getBorrowed()).isTrue();
extension.completeReturnRequest(task, false);
container = records.getContainerBac13();
assertThat(container.getBorrowed()).isTrue();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_RETURNED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_RETURNED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + localDate,
"title:" + container.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + container.getId(),
"recordType:containerrecord",
"isAccepted:Non"
);
}
@Test
public void givenBorrowExtendedRequestCompletedAndApprovedThenExtendFolder() throws RecordServicesException {
recordServices.update(records.getFolder_A42().setBorrowed(true).setBorrowUser(records.getChuckNorris().getId()).setBorrowPreviewReturnDate(LocalDate.now()));
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowFolderExtensionRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle(), LocalDate.now().plusDays(7)).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
assertThat(folder.getBorrowPreviewReturnDate()).isEqualTo(LocalDate.now());
extension.completeBorrowExtensionRequest(task, true);
folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
assertThat(folder.getBorrowPreviewReturnDate()).isEqualTo(LocalDate.now().plusDays(7));
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWING_EXTENTED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWING_EXTENTED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(9);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + folder.getBorrowPreviewReturnDate(),
"title:" + folder.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder", "extensionDate:" + localDate,
"isAccepted:Oui"
);
}
@Test
public void givenBorrowExtendedRequestCompletedAndDeniedThenDoNotExtendFolder() throws RecordServicesException {
recordServices.update(records.getFolder_A42().setBorrowed(true).setBorrowUser(records.getChuckNorris().getId()).setBorrowPreviewReturnDate(LocalDate.now()));
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowFolderExtensionRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle(), LocalDate.now().plusDays(7)).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Folder folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
assertThat(folder.getBorrowPreviewReturnDate()).isEqualTo(LocalDate.now());
extension.completeBorrowExtensionRequest(task, false);
folder = records.getFolder_A42();
assertThat(folder.getBorrowed()).isTrue();
assertThat(folder.getBorrowPreviewReturnDate()).isEqualTo(LocalDate.now());
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWING_EXTENTED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWING_EXTENTED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(9);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"currentUser:admin", "returnDate:" + folder.getBorrowPreviewReturnDate().plusDays(7),
"title:" + folder.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder", "extensionDate:" + localDate,
"isAccepted:Non"
);
}
@Test
public void givenBorrowExtendedCompletedAndApprovedThenExtendContainer() throws RecordServicesException {
recordServices.update(records.getContainerBac13().setBorrowed(true).setBorrower(records.getChuckNorris().getId()).setPlanifiedReturnDate(LocalDate.now()));
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowContainerExtensionRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle(), LocalDate.now().plusDays(7)).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
ContainerRecord containerRecord = records.getContainerBac13();
assertThat(containerRecord.getBorrowed()).isTrue();
assertThat(containerRecord.getPlanifiedReturnDate()).isEqualTo(LocalDate.now());
extension.completeBorrowExtensionRequest(task, true);
containerRecord = records.getContainerBac13();
assertThat(containerRecord.getBorrowed()).isTrue();
assertThat(containerRecord.getPlanifiedReturnDate()).isEqualTo(LocalDate.now().plusDays(7));
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWING_EXTENTED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWING_EXTENTED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande de renouvellement d'emprunt du contenant: 10_A_06");
assertThat(emailToSend.getParameters()).hasSize(9);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:Demande de renouvellement d'emprunt du contenant: 10_A_06",
"currentUser:admin", "returnDate:" + containerRecord.getPlanifiedReturnDate(),
"title:" + containerRecord.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + containerRecord.getId(),
"recordType:containerrecord", "extensionDate:" + localDate,
"isAccepted:Oui"
);
}
@Test
public void givenBorrowExtendedCompletedAndDeniedThenDoNotExtendContainer() throws RecordServicesException {
recordServices.update(records.getContainerBac13().setBorrowed(true).setBorrower(records.getChuckNorris().getId()).setPlanifiedReturnDate(LocalDate.now()));
RMTask task = rm.wrapRMTask(taskSchemas.newBorrowContainerExtensionRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle(), LocalDate.now().plusDays(7)).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
ContainerRecord containerRecord = records.getContainerBac13();
assertThat(containerRecord.getBorrowed()).isTrue();
assertThat(containerRecord.getPlanifiedReturnDate()).isEqualTo(LocalDate.now());
extension.completeBorrowExtensionRequest(task, false);
containerRecord = records.getContainerBac13();
assertThat(containerRecord.getBorrowed()).isTrue();
assertThat(containerRecord.getPlanifiedReturnDate()).isEqualTo(LocalDate.now());
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_BORROWING_EXTENTED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_BORROWING_EXTENTED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo("Demande de renouvellement d'emprunt du contenant: 10_A_06");
assertThat(emailToSend.getParameters()).hasSize(9);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:Demande de renouvellement d'emprunt du contenant: 10_A_06",
"currentUser:admin", "returnDate:" + containerRecord.getPlanifiedReturnDate().plusDays(7),
"title:" + containerRecord.getTitle(), "constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + containerRecord.getId(),
"recordType:containerrecord", "extensionDate:" + localDate,
"isAccepted:Non"
);
}
@Test
public void givenReactivationRequestCompletedAndApprovedThenReactivateFolder() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newReactivateFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle(),
LocalDate.now()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
LocalDate previousTransferDate = records.getFolder_A42().getActualTransferDate();
assertThat(previousTransferDate != null);
extension.completeReactivationRequest(task, true);
Folder folder = records.getFolder_A42();
assertThat(folder.getArchivisticStatus()).isEqualTo(FolderStatus.ACTIVE);
assertThat(folder.getReactivationDecommissioningDate()).isEqualTo(LocalDate.now());
assertThat(folder.getReactivationDates()).isEqualTo(asList(LocalDate.now()));
assertThat(folder.getReactivationUsers()).isEqualTo(asList(records.getChuckNorris().getId()));
assertThat(folder.getPreviousTransferDates()).isEqualTo(asList(previousTransferDate));
assertThat(folder.getPreviousDepositDates()).isEmpty();
assertThat(folder.getActualTransferDate()).isNull();
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_REACTIVATED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_REACTIVATED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"reactivationDate:" + localDate,
"currentUser:admin", "title:" + folder.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Oui"
);
}
@Test
public void givenReactivationRequestCompletedAndDeniedThenDoNotReactivateFolder() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newReactivateFolderRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.folder_A42, records.getFolder_A42().getTitle(),
LocalDate.now()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
LocalDate previousTransferDate = records.getFolder_A42().getActualTransferDate();
assertThat(previousTransferDate != null);
extension.completeReactivationRequest(task, false);
Folder folder = records.getFolder_A42();
assertThat(folder.getArchivisticStatus()).isEqualTo(FolderStatus.SEMI_ACTIVE);
assertThat(folder.getReactivationDecommissioningDate()).isNull();
assertThat(folder.getReactivationDates()).isEmpty();
assertThat(folder.getReactivationUsers()).isEmpty();
assertThat(folder.getPreviousTransferDates()).isEmpty();
assertThat(folder.getPreviousDepositDates()).isEmpty();
assertThat(folder.getActualTransferDate()).isEqualTo(previousTransferDate);
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_REACTIVATED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_REACTIVATED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"reactivationDate:" + localDate,
"currentUser:admin", "title:" + folder.getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayFolder/" + folder.getId(),
"recordType:folder",
"isAccepted:Non"
);
}
@Test
public void givenReactivationRequestCompletedAndApprovedThenReactivateContainer() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newReactivationContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle(),
LocalDate.now()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Map<String, LocalDate> previousTransferDates = new HashMap<>();
LogicalSearchCondition condition = allConditions(
where(rm.folder.container()).isEqualTo(records.containerId_bac13),
where(rm.folder.archivisticStatus()).isNotEqual(FolderStatus.ACTIVE),
where(rm.folder.mediaType()).isEqualTo(FolderMediaType.ANALOG)
);
for(Folder folder: rm.searchFolders(condition)) {
LocalDate previousTransferDate = records.getFolder_A42().getActualTransferDate();
assertThat(previousTransferDate != null);
previousTransferDates.put(folder.getId(), previousTransferDate);
}
extension.completeReactivationRequest(task, true);
for(Folder folder: rm.searchFolders(condition)) {
assertThat(folder.getArchivisticStatus()).isEqualTo(FolderStatus.ACTIVE);
assertThat(folder.getReactivationDecommissioningDate()).isEqualTo(LocalDate.now());
assertThat(folder.getReactivationDates()).isEqualTo(asList(LocalDate.now()));
assertThat(folder.getReactivationUsers()).isEqualTo(asList(records.getChuckNorris().getId()));
assertThat(folder.getPreviousTransferDates()).isEqualTo(asList(previousTransferDates.get(folder.getId())));
assertThat(folder.getPreviousDepositDates()).isEmpty();
assertThat(folder.getActualTransferDate()).isNull();
}
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_REACTIVATED_ACCEPTED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_REACTIVATED_ACCEPTED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"reactivationDate:" + localDate,
"currentUser:admin", "title:" + records.getContainerBac13().getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + records.containerId_bac13,
"recordType:containerrecord",
"isAccepted:Oui"
);
}
@Test
public void givenReactivationRequestCompletedAndDeniedThenDoNotReactivateContainer() throws RecordServicesException {
RMTask task = rm.wrapRMTask(taskSchemas.newReactivationContainerRequestTask(records.getChuckNorris().getId(),
asList(records.getAdmin().getId(), records.getChuckNorris().getId()), records.containerId_bac13, records.getContainerBac13().getTitle(),
LocalDate.now()).getWrappedRecord());
recordServices.add(task.set(RequestTask.RESPONDANT, records.getAdmin().getId()));
Map<String, LocalDate> previousTransferDates = new HashMap<>();
LogicalSearchCondition condition = allConditions(
where(rm.folder.container()).isEqualTo(records.containerId_bac13),
where(rm.folder.archivisticStatus()).isNotEqual(FolderStatus.ACTIVE),
where(rm.folder.mediaType()).isEqualTo(FolderMediaType.ANALOG)
);
for(Folder folder: rm.searchFolders(condition)) {
LocalDate previousTransferDate = records.getFolder_A42().getActualTransferDate();
assertThat(previousTransferDate != null);
previousTransferDates.put(folder.getId(), previousTransferDate);
}
extension.completeReactivationRequest(task, false);
for(Folder folder: rm.searchFolders(condition)) {
assertThat(folder.getArchivisticStatus()).isEqualTo(FolderStatus.SEMI_ACTIVE);
assertThat(folder.getReactivationDecommissioningDate()).isNull();
assertThat(folder.getReactivationDates()).isEmpty();
assertThat(folder.getReactivationUsers()).isEmpty();
assertThat(folder.getPreviousTransferDates()).isEmpty();
assertThat(folder.getPreviousDepositDates()).isEmpty();
assertThat(folder.getActualTransferDate()).isEqualTo(previousTransferDates.get(folder.getId()));
}
EmailAddress adresseReceiver = new EmailAddress("Chuck Norris", "chuck@doculibre.com");
EmailToSend emailToSend = getEmailToSend(ALERT_REACTIVATED_DENIED);
assertThat(emailToSend).isNotNull();
assertThat(emailToSend.getTemplate()).isEqualTo(ALERT_REACTIVATED_DENIED);
assertThat(emailToSend.getTo()).isEqualTo(Arrays.asList(adresseReceiver));
assertThat(emailToSend.getFrom()).isNull();
assertThat(emailToSend.getSendOn()).isEqualTo(localDateTime);
assertThat(emailToSend.getSubject()).isEqualTo(task.getTitle());
assertThat(emailToSend.getParameters()).hasSize(8);
assertThat(emailToSend.getParameters()).containsOnly(
"subject:" + task.getTitle(),
"reactivationDate:" + localDate,
"currentUser:admin", "title:" + records.getContainerBac13().getTitle(),
"constellioURL:http://localhost:8080/constellio/",
"recordURL:http://localhost:8080/constellio/#!displayContainer/" + records.containerId_bac13,
"recordType:containerrecord",
"isAccepted:Non"
);
}
private EmailToSend getEmailToSend(String template) {
LogicalSearchCondition condition = from(rm.emailToSend())
.where(rm.emailToSend().getMetadata(EmailToSend.TEMPLATE))
.isEqualTo(template);
Record emailRecord = getModelLayerFactory().newSearchServices().searchSingleResult(condition);
if (emailRecord != null) {
return rm.wrapEmailToSend(emailRecord);
} else {
return null;
}
}
}