package com.constellio.app.modules.rm.services.decommissioning; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test; import com.constellio.app.modules.rm.RMTestRecords; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.model.services.records.RecordServices; import com.constellio.sdk.tests.ConstellioTest; public class DecommissioningEmailServiceAcceptTest extends ConstellioTest { DecommissioningService decommissioningService; RMSchemasRecordsServices rm; RecordServices recordServices; RMTestRecords records = new RMTestRecords(zeCollection); DecommissioningEmailService service; //User chuckNorris, dakota, edouard; @Before public void setUp() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(records) .withFoldersAndContainersOfEveryStatus() ); rm = new RMSchemasRecordsServices(zeCollection, getAppLayerFactory()); decommissioningService = new DecommissioningService(zeCollection, getAppLayerFactory()); recordServices = getModelLayerFactory().newRecordServices(); service = new DecommissioningEmailService(zeCollection, getModelLayerFactory()); } @Test public void givenEverybodyHasAnEmailAddressThenFindCorrectUsers() throws Exception { assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10()).containsOnly(dakota, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10a()).containsOnly(dakota, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11()).containsOnly(edouard, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11b()).containsOnly(edouard, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12()).containsOnly(edouard, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12b()).containsOnly(edouard, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12c()).containsOnly(edouard, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit20()).containsOnly(dakota, gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30()).containsOnly(gandalf); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30c()).containsOnly(gandalf); } @Test public void givenGandalfAndAdminHasNoEmailAddressThenFindCorrectUsers() throws Exception { recordServices.update(records.getAdmin().setEmail(null)); recordServices.update(records.getGandalf_managerInABC().setEmail(null)); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10()).containsOnly(dakota); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10a()).containsOnly(dakota); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11b()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12b()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12c()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit20()).containsOnly(dakota); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30()).containsOnly(dakota); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30c()).containsOnly(dakota); } @Test public void givenDakotaGandalfAndAdminHasNoEmailAddressThenFindCorrectUsers() throws Exception { recordServices.update(records.getAdmin().setEmail(null)); recordServices.update(records.getGandalf_managerInABC().setEmail(null)); recordServices.update(records.getDakota_managerInA_userInB().setEmail(null)); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10()).containsOnly(chuckNorris); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit10a()).containsOnly(chuckNorris); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit11b()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12b()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit12c()).containsOnly(edouard); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit20()).containsOnly(chuckNorris); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30()).containsOnly(chuckNorris); assertThatUsersWithEmailAddressAndDecomPermissionInConcept(records.getUnit30c()).containsOnly(chuckNorris); } private org.assertj.core.api.ListAssert<Object> assertThatUsersWithEmailAddressAndDecomPermissionInConcept( AdministrativeUnit unit) { return assertThat(service.getUsersWithEmailAddressAndDecommissioningPermissionInConcept(unit)).extracting("username"); } }