package com.constellio.sdk.tests; import static java.util.Arrays.asList; import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import com.constellio.app.entities.schemasDisplay.MetadataDisplayConfig; import com.constellio.app.entities.schemasDisplay.SchemaTypeDisplayConfig; import com.constellio.app.modules.rm.constants.RMRoles; import com.constellio.app.modules.rm.constants.RMTaxonomies; import com.constellio.app.modules.rm.wrappers.AdministrativeUnit; import com.constellio.app.modules.rm.wrappers.Category; import com.constellio.app.modules.rm.wrappers.ContainerRecord; import com.constellio.app.modules.rm.wrappers.DecommissioningList; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.app.modules.rm.wrappers.FilingSpace; import com.constellio.app.modules.rm.wrappers.Folder; import com.constellio.app.modules.rm.wrappers.StorageSpace; import com.constellio.app.modules.rm.wrappers.UniformSubdivision; import com.constellio.app.services.extensions.plugins.ConstellioPluginManager; import com.constellio.app.services.schemasDisplay.SchemasDisplayManager; import com.constellio.model.entities.Taxonomy; import com.constellio.model.entities.records.wrappers.Group; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.records.wrappers.UserDocument; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.Schemas; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.schemas.SchemaUtils; import com.constellio.model.services.security.roles.RolesManager; import com.constellio.model.services.taxonomies.TaxonomiesManager; public class ModulesAndMigrationsTestFeaturesAcceptanceTest extends ConstellioTest { ConstellioPluginManager pluginManager; @Before public void setUp() throws Exception { } @Test public void givenKeyI18nWhenGetLabelInI18nThenOk() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); MetadataSchemasManager manager = getModelLayerFactory().getMetadataSchemasManager(); assertThat(manager.getSchemaTypes("zeCollection").getSchemaTypes().size()).isNotZero(); } @Test public void testToCurrentVersion() throws Exception { prepareSystem( withZeCollection() ); pluginManager = getAppLayerFactory().getPluginManager(); MetadataSchemasManager manager = getModelLayerFactory().getMetadataSchemasManager(); assertThat(manager.getSchemaTypes("zeCollection").getSchemaTypes().size()).isNotZero(); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType("user").getCode()).isEqualTo("user"); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType(UserDocument.SCHEMA_TYPE)).isNotNull(); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType("group").getCode()).isEqualTo("group"); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType("collection").getCode()).isEqualTo("collection"); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType("task").getCode()).isEqualTo("task"); assertThat(manager.getSchemaTypes("zeCollection").getSchemaType("event").getCode()).isEqualTo("event"); } @Test public void whenGetFoldersFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, Folder.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); int i = 0; assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.TYPE); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Schemas.TITLE.getLocalCode()); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.PARENT_FOLDER); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.CATEGORY_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.UNIFORM_SUBDIVISION_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.RETENTION_RULE_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.COPY_STATUS_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.MAIN_COPY_RULE_ID_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.OPENING_DATE); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.ENTERED_CLOSING_DATE); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.ADMINISTRATIVE_UNIT_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.MEDIUM_TYPES); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.KEYWORDS); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.DESCRIPTION); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.CONTAINER); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.ACTUAL_TRANSFER_DATE); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.ACTUAL_DEPOSIT_DATE); assertThat(metadataCodes.get(i++)).isEqualTo(Folder.DEFAULT_SCHEMA + "_" + Folder.ACTUAL_DESTRUCTION_DATE); assertThereIsNotSystemReservedIn(metadataCodes); } @Test public void whenGetDocumentsFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, Document.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); int i = 0; assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Document.FOLDER); assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Document.TYPE); assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Schemas.TITLE.getLocalCode()); assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Document.MAIN_COPY_RULE_ID_ENTERED); assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Document.KEYWORDS); assertThat(metadataCodes.get(i++)).isEqualTo(Document.DEFAULT_SCHEMA + "_" + Document.CONTENT); assertThereIsNotSystemReservedIn(metadataCodes); } @Test public void whenGetAdministrativeUnitsFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, AdministrativeUnit.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); assertThereIsNotSystemReservedIn(metadataCodes); } @Test public void whenGetCategorysFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, Category.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); assertThat(metadataCodes.get(0)).isEqualTo(Category.DEFAULT_SCHEMA + "_" + Category.CODE); assertThat(metadataCodes.get(1)).isEqualTo(Category.DEFAULT_SCHEMA + "_" + Schemas.TITLE.getLocalCode()); assertThat(metadataCodes.get(2)).isEqualTo(Category.DEFAULT_SCHEMA + "_" + Category.DESCRIPTION); assertThat(metadataCodes.get(3)).isEqualTo(Category.DEFAULT_SCHEMA + "_" + Category.KEYWORDS); assertThat(metadataCodes.get(4)).isEqualTo(Category.DEFAULT_SCHEMA + "_" + Category.PARENT); assertThereIsNotSystemReservedIn(metadataCodes); } @Test public void whenGetDecommissioningListsFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, DecommissioningList.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); int i = 0; assertThat(metadataCodes.get(i++)).isEqualTo( DecommissioningList.DEFAULT_SCHEMA + "_" + Schemas.TITLE_CODE); assertThat(metadataCodes.get(i++)) .isEqualTo(DecommissioningList.DEFAULT_SCHEMA + "_" + DecommissioningList.DESCRIPTION); assertThereIsNotSystemReservedIn(metadataCodes); } @Test public void whenGetFilingSpacesFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, FilingSpace.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.size()).isNotZero(); assertThat(metadataCodes.get(0)).isEqualTo(FilingSpace.DEFAULT_SCHEMA + "_" + FilingSpace.CODE); assertThat(metadataCodes.get(1)).isEqualTo(FilingSpace.DEFAULT_SCHEMA + "_" + Schemas.TITLE.getLocalCode()); assertThat(metadataCodes.get(2)).isEqualTo(FilingSpace.DEFAULT_SCHEMA + "_" + FilingSpace.ADMINISTRATORS); assertThat(metadataCodes.get(3)).isEqualTo(FilingSpace.DEFAULT_SCHEMA + "_" + FilingSpace.USERS); assertThereIsNotSystemReservedIn(metadataCodes); } private void assertThereIsNotSystemReservedIn(List<String> metadataCodes) { MetadataSchemaTypes schemaTypes = getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes(zeCollection); List<String> metadataCodesSystemReserved = new ArrayList<>(); for (String metadataCode : metadataCodes) { if (schemaTypes.getMetadata(metadataCode).isSystemReserved()) { metadataCodesSystemReserved.add(metadataCode); } } assertThat(metadataCodesSystemReserved.isEmpty()); } @Test public void whenGetStorageSpacesFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, StorageSpace.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.subList(0, 6)).isEqualTo(asList( StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.TYPE, StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.CODE, StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.TITLE, StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.DESCRIPTION, StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.CAPACITY, StorageSpace.DEFAULT_SCHEMA + "_" + StorageSpace.DECOMMISSIONING_TYPE )); assertThat(metadataCodes.size()).isNotZero(); } @Test public void whenGetUniformSubdivionsFormMetadataCodesThenItIsInOrder() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); List<String> metadataCodes = schemasDisplayManager.getSchema(zeCollection, UniformSubdivision.DEFAULT_SCHEMA) .getFormMetadataCodes(); assertThat(metadataCodes.subList(0, 4)).isEqualTo(asList( UniformSubdivision.DEFAULT_SCHEMA + "_" + UniformSubdivision.CODE, UniformSubdivision.DEFAULT_SCHEMA + "_" + Schemas.TITLE.getLocalCode(), UniformSubdivision.DEFAULT_SCHEMA + "_" + UniformSubdivision.RETENTION_RULE, UniformSubdivision.DEFAULT_SCHEMA + "_" + UniformSubdivision.DESCRIPTION )); } @Test public void testWithRMModule() throws Exception { prepareSystem( withZeCollection().withConstellioRMModule() ); pluginManager = getAppLayerFactory().getPluginManager(); MetadataSchemasManager manager = getModelLayerFactory().getMetadataSchemasManager(); assertThat(manager.getSchemaTypes("zeCollection").getSchemaTypes()).extracting("code").containsOnly("document", "ddvTaskType", "cart", "ddvStorageSpaceType", "ddvContainerRecordType", "savedSearch", "userDocument", "ddvVariablePeriod", "storageSpace", "decommissioningList", "emailToSend", "event", "group", "workflowInstance", "ddvMediumType", "filingSpace", "workflow", "ddvFolderType", "collection", "userTask", "uniformSubdivision", "authorizationDetails", "administrativeUnit", "ddvDocumentType", "folder", "task", "ddvTaskStatus", "containerRecord", "report", "category", "facet", "retentionRule", "user", "printable", "userFolder"); TaxonomiesManager taxonomiesManager = getModelLayerFactory().getTaxonomiesManager(); Taxonomy administrativeUnitsTaxonomy = taxonomiesManager.getEnabledTaxonomyWithCode("zeCollection", RMTaxonomies.ADMINISTRATIVE_UNITS); Taxonomy classificationPlanTaxonomy = taxonomiesManager.getEnabledTaxonomyWithCode("zeCollection", RMTaxonomies.CLASSIFICATION_PLAN); Taxonomy storagesAndContainersTaxonomy = taxonomiesManager.getEnabledTaxonomyWithCode("zeCollection", RMTaxonomies.STORAGES); assertThat(administrativeUnitsTaxonomy).isNotNull(); assertThat(administrativeUnitsTaxonomy.getSchemaTypes()).containsOnly(AdministrativeUnit.SCHEMA_TYPE); assertThat(classificationPlanTaxonomy).isNotNull(); assertThat(classificationPlanTaxonomy.getSchemaTypes()).containsOnly(Category.SCHEMA_TYPE); assertThat(storagesAndContainersTaxonomy).isNotNull(); assertThat(storagesAndContainersTaxonomy.getSchemaTypes()) .containsOnly(StorageSpace.SCHEMA_TYPE); RolesManager rolesManager = getModelLayerFactory().getRolesManager(); assertThat(rolesManager.getRole("zeCollection", RMRoles.USER)).isNotNull(); assertThat(rolesManager.getRole("zeCollection", RMRoles.MANAGER)).isNotNull(); assertThat(rolesManager.getRole("zeCollection", RMRoles.RGD)).isNotNull(); SchemasDisplayManager schemasDisplayManager = getAppLayerFactory().getMetadataSchemasDisplayManager(); assertThat(schemaTypesOf(schemasDisplayManager.getSimpleSearchSchemaTypeConfigs(zeCollection))) .contains(Folder.SCHEMA_TYPE, Document.SCHEMA_TYPE, ContainerRecord.SCHEMA_TYPE) .doesNotContain(User.SCHEMA_TYPE, Group.SCHEMA_TYPE); assertThat(schemaTypesOf(schemasDisplayManager.getAdvancedSearchSchemaTypeConfigs(zeCollection))) .contains(Folder.SCHEMA_TYPE, Document.SCHEMA_TYPE, ContainerRecord.SCHEMA_TYPE) .doesNotContain(User.SCHEMA_TYPE, Group.SCHEMA_TYPE); assertThat(metadataCodesOf(schemasDisplayManager.getAdvancedSearchMetadatas(zeCollection, Document.SCHEMA_TYPE))) .contains(Document.FOLDER, Schemas.TITLE.getLocalCode(), Document.KEYWORDS) .doesNotContain(Document.CONTENT, Schemas.ALL_AUTHORIZATIONS.getLocalCode()); } // --------------------------- private List<String> schemaTypesOf(List<SchemaTypeDisplayConfig> configs) { List<String> codes = new ArrayList<>(); for (SchemaTypeDisplayConfig type : configs) { codes.add(type.getSchemaType()); } return codes; } private List<String> metadataCodesOf(List<MetadataDisplayConfig> configs) { List<String> codes = new ArrayList<>(); for (MetadataDisplayConfig metadata : configs) { codes.add(new SchemaUtils().toLocalMetadataCode(metadata.getMetadataCode())); } return codes; } }