package com.constellio.app.services.migrations; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Before; import org.junit.Test; import com.constellio.app.services.extensions.plugins.ConstellioPluginManager; import com.constellio.model.entities.records.wrappers.Event; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.entries.DataEntryType; import com.constellio.app.services.collections.CollectionsManager; import com.constellio.model.services.extensions.ConstellioModulesManager; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.sdk.tests.ConstellioTest; public class MigrationSchemasCreationAcceptanceTest extends ConstellioTest { MetadataSchemasManager metadataSchemasManager; com.constellio.app.services.migrations.MigrationServices migrationServices; CollectionsManager collectionsManager; ConstellioPluginManager pluginManager; ConstellioModulesManager modulesManager; @Before public void setUp() { modulesManager = getAppLayerFactory().getModulesManager(); pluginManager = getAppLayerFactory().getPluginManager(); migrationServices = getAppLayerFactory().newMigrationServices(); metadataSchemasManager = getModelLayerFactory().getMetadataSchemasManager(); collectionsManager = getAppLayerFactory().getCollectionsManager(); } @Test public void whenCreateCollectionThenAllSchemasCreated() throws Exception { givenCollection(zeCollection); MetadataSchemaTypes types = metadataSchemasManager.getSchemaTypes(zeCollection); assertThatCollectionIsOK(types); assertThatGroupIsOK(types); assertThatUserIsOK(types); assertThatUserHasAllCommonMetadatas(types); assertThatEventIsOK(types); } private void assertThatCollectionIsOK(MetadataSchemaTypes schemaTypes) throws Exception { MetadataSchema defaultCollection = schemaTypes.getSchemaType("collection").getDefaultSchema(); assertThat(defaultCollection.getCode()).isEqualTo("collection_default"); assertThat(defaultCollection.getMetadata("code").isUndeletable()).isTrue(); assertThat(defaultCollection.getMetadata("name").isUndeletable()).isTrue(); } private void assertThatGroupIsOK(MetadataSchemaTypes schemaTypes) { MetadataSchema defaultGroup = schemaTypes.getSchemaType("group").getDefaultSchema(); assertThat(defaultGroup.getCode()).isEqualTo("group_default"); assertThat(defaultGroup.getMetadata("code").isUndeletable()).isTrue(); assertThat(defaultGroup.getMetadata("roles").isUndeletable()).isTrue(); assertThat(defaultGroup.getMetadata("roles").isMultivalue()).isTrue(); } private void assertThatUserIsOK(MetadataSchemaTypes schemaTypes) { MetadataSchema defaultUser = schemaTypes.getSchemaType("user").getDefaultSchema(); assertThat(defaultUser.getCode()).isEqualTo("user_default"); assertThat(defaultUser.getMetadata("username").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("firstname").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("lastname").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("email").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("userroles").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("userroles").isMultivalue()).isTrue(); assertThat(defaultUser.getMetadata("allroles").isMultivalue()).isTrue(); assertThat(defaultUser.getMetadata("title").getDataEntry().getType()).isEqualTo(DataEntryType.CALCULATED); } private void assertThatUserHasAllCommonMetadatas(MetadataSchemaTypes schemaTypes) { MetadataSchema defaultUser = schemaTypes.getSchemaType("user").getDefaultSchema(); assertThat(defaultUser.getCode()).isEqualTo("user_default"); assertThat(defaultUser.getMetadata("authorizations").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("authorizations").isMultivalue()).isTrue(); assertThat(defaultUser.getMetadata("detachedauthorizations").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("allauthorizations").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("allauthorizations").isMultivalue()).isTrue(); assertThat(defaultUser.getMetadata("tokens").isUndeletable()).isTrue(); assertThat(defaultUser.getMetadata("tokens").isMultivalue()).isTrue(); } private void assertThatEventIsOK(MetadataSchemaTypes schemaTypes) { MetadataSchema defaultEvent = schemaTypes.getSchemaType("event").getDefaultSchema(); assertThat(defaultEvent.getCode()).isEqualTo("event_default"); assertThat(defaultEvent.getMetadata(Event.RECORD_ID).isUndeletable()).isTrue(); //assertThat(defaultEvent.getMetadata(Event.RECORD_SCHEMA).isUndeletable()).isTrue(); assertThat(defaultEvent.getMetadata(Event.TYPE).isUndeletable()).isTrue(); assertThat(defaultEvent.getMetadata(Event.USERNAME).isUndeletable()).isTrue(); } }