package com.constellio.model.entities.schemas;
import static com.constellio.model.entities.schemas.MetadataValueType.STRING;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.Before;
import com.constellio.app.modules.rm.RMTestRecords;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.app.modules.rm.wrappers.Folder;
import com.constellio.model.services.schemas.MetadataSchemasManager;
import com.constellio.model.services.schemas.MetadataSchemasManagerException.OptimisticLocking;
import com.constellio.model.services.schemas.builders.MetadataSchemaBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypeBuilder;
import com.constellio.model.services.schemas.builders.MetadataSchemaTypesBuilder;
import com.constellio.sdk.tests.ConstellioTest;
public class MetadataSchemaTypesAcceptanceTest extends ConstellioTest {
RMTestRecords records = new RMTestRecords(zeCollection);
private MetadataSchemasManager schemaManager;
private MetadataSchemaBuilder folderSchema, customFolderSchema, documentSchema, documentCustomSchema;
private Metadata mdInFolderSchemaWithLocalCode1, mdInCustomFolderSchemaWithLocalCode1, mdInDocumentSchemaWithLocalCode1, mdInDocumentCustomSchemaWithLocalCode1,
mdInFolderSchemaWithLocalCode2, mdInCustomFolderSchemaWithLocalCode3, mdInDocumentSchemaWithLocalCode4, mdInDocumentCustomSchemaWithLocalCode5,
mdInCustomFolderSchema2WithLocalCode3;
@Before
public void setUp()
throws Exception {
prepareSystem(
withZeCollection().withConstellioRMModule().withAllTestUsers().withRMTest(
records).withFoldersAndContainersOfEveryStatus()
);
schemaManager = getModelLayerFactory().getMetadataSchemasManager();
initTestData();
}
//
private void initTestData()
throws OptimisticLocking {
MetadataSchemaTypesBuilder schemaTypesBuilder = schemaManager
.modify(zeCollection);
MetadataSchemaTypeBuilder folderSchemaType = schemaTypesBuilder.getSchemaType(Folder.SCHEMA_TYPE);
folderSchema = schemaTypesBuilder.getSchema(Folder.DEFAULT_SCHEMA);
customFolderSchema = folderSchemaType.createCustomSchema("custom");
MetadataSchemaBuilder customFolderSchema2 = folderSchemaType.createCustomSchema("custom2");
MetadataSchemaTypeBuilder documetSchemaType = schemaTypesBuilder.getSchemaType(Document.SCHEMA_TYPE);
documentSchema = documetSchemaType.getDefaultSchema();
documentCustomSchema = documetSchemaType.createCustomSchema("custom");
documentSchema.create("code1").setType(STRING)
.setDefaultValue("default");
folderSchema.create("code1").setType(STRING)
.setDefaultValue("default");
folderSchema.create("code2").setType(STRING)
.setDefaultValue("default");
customFolderSchema.create("code3").setType(STRING)
.setDefaultValue("default");
customFolderSchema2.create("code3").setType(STRING)
.setDefaultValue("default");
documentSchema.create("code4").setType(STRING)
.setDefaultValue("default");
documentCustomSchema.create("code5").setType(STRING)
.setDefaultValue("default");
schemaManager.saveUpdateSchemaTypes(schemaTypesBuilder);
MetadataSchemaTypes types = schemaManager.getSchemaTypes(zeCollection);
mdInFolderSchemaWithLocalCode1 = types.getMetadata(folderSchema.getCode() + "_" + "code1");
mdInCustomFolderSchemaWithLocalCode1 = types.getMetadata(customFolderSchema.getCode() + "_" + "code1");
mdInDocumentSchemaWithLocalCode1 = types.getMetadata(documentSchema.getCode() + "_" + "code1");
mdInDocumentCustomSchemaWithLocalCode1 = types.getMetadata(documentCustomSchema.getCode() + "_" + "code1");
mdInFolderSchemaWithLocalCode2 = types.getMetadata(folderSchema.getCode() + "_" + "code2");
mdInCustomFolderSchemaWithLocalCode3 = types.getMetadata(customFolderSchema.getCode() + "_" + "code3");
mdInCustomFolderSchema2WithLocalCode3 = types.getMetadata(customFolderSchema2.getCode() + "_" + "code3");
mdInDocumentSchemaWithLocalCode4 = types.getMetadata(documentSchema.getCode() + "_" + "code4");
mdInDocumentCustomSchemaWithLocalCode5 = types.getMetadata(documentCustomSchema.getCode() + "_" + "code5");
}
//TODO Francis fix @Test
public void whenGetAllMetadatasThenOk() {
MetadataSchemaTypes types = schemaManager.getSchemaTypes(zeCollection);
assertThat(types.getAllMetadatas()).extracting("code")
.contains(mdInFolderSchemaWithLocalCode1.getCode(), mdInDocumentSchemaWithLocalCode1.getCode(),
mdInFolderSchemaWithLocalCode2.getCode(), mdInCustomFolderSchemaWithLocalCode3.getCode(),
mdInDocumentSchemaWithLocalCode4.getCode(), mdInDocumentCustomSchemaWithLocalCode5.getCode()
, mdInCustomFolderSchema2WithLocalCode3.getCode());
}
//TODO Francis fix @Test
public void whenGetAllMetadatasIncludingThoseWithInheritanceThenOk() {
MetadataSchemaTypes types = schemaManager.getSchemaTypes(zeCollection);
assertThat(types.getAllMetadatasIncludingThoseWithInheritance()).extracting("code").contains(
mdInFolderSchemaWithLocalCode1.getCode(), mdInDocumentSchemaWithLocalCode1.getCode(),
mdInCustomFolderSchemaWithLocalCode1.getCode(), mdInDocumentCustomSchemaWithLocalCode1.getCode(),
mdInFolderSchemaWithLocalCode2.getCode(), mdInCustomFolderSchemaWithLocalCode3.getCode(),
mdInDocumentSchemaWithLocalCode4.getCode(), mdInDocumentCustomSchemaWithLocalCode5.getCode(),
mdInCustomFolderSchema2WithLocalCode3.getCode()
);
}
}