package com.constellio.model.services.schemas.builders; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.mockito.Mock; import com.constellio.data.dao.services.DataStoreTypesFactory; import com.constellio.model.entities.Language; import com.constellio.model.entities.schemas.Metadata; import com.constellio.model.entities.schemas.MetadataSchema; import com.constellio.model.entities.schemas.MetadataSchemaType; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.utils.DefaultClassProvider; import com.constellio.sdk.tests.ConstellioTest; @RunWith(Parameterized.class) public class MetadataSchemaSearchMethodsAcceptanceTest extends ConstellioTest { static String givenBuilder = "givenBuilder"; static String givenFinalEnity = "givenFinalEnity"; static String givenBuilderObtainedFromManager = "givenBuilderObtainedFromManager"; static String givenFinalEnityObtainedFromManager = "givenFinalEnityObtainedFromManager"; @Mock DataStoreTypesFactory typesFactory; boolean builderMode; String testCase; MetadataSchemaTypesBuilder typesBuilder; MetadataSchemaTypes types; public MetadataSchemaSearchMethodsAcceptanceTest(String testCase) { this.testCase = testCase; } @Parameterized.Parameters(name = "{0}") public static Collection<Object[]> testCases() { return Arrays.asList(new Object[][] { { givenBuilder }, { givenFinalEnity }, { givenBuilderObtainedFromManager }, { givenFinalEnityObtainedFromManager } }); } @SuppressWarnings("unused") @Before public void setUp() throws Exception { givenCollection(zeCollection); MetadataSchemasManager manager = getModelLayerFactory().getMetadataSchemasManager(); typesBuilder = MetadataSchemaTypesBuilder.modify(manager.getSchemaTypes("zeCollection"), new DefaultClassProvider()); MetadataSchemaTypeBuilder type1Builder = typesBuilder.getOrCreateNewSchemaType("type1") .addLabel(Language.French, "type1"); MetadataSchemaTypeBuilder type2Builder = typesBuilder.getOrCreateNewSchemaType("type2") .addLabel(Language.French, "type2"); MetadataSchemaBuilder type1Default = type1Builder.getDefaultSchema().addLabel(Language.French, "schemaDefault1"); MetadataSchemaBuilder type1Schema1Builder = type1Builder.createCustomSchema("schema1") .addLabel(Language.French, "schema1"); MetadataSchemaBuilder type1Schema2Builder = type1Builder.createCustomSchema("schema2") .addLabel(Language.French, "schema2"); MetadataSchemaBuilder type2Default = type2Builder.getDefaultSchema().addLabel(Language.French, "schemaDefault2"); MetadataSchemaBuilder type2Schema1Builder = type2Builder.createCustomSchema("schema1") .addLabel(Language.French, "schema1"); MetadataSchemaBuilder type2Schema2Builder = type2Builder.createCustomSchema("schema2") .addLabel(Language.French, "schema2"); MetadataBuilder type1DefaultSchemaMetadata1Builder = newMetadata(type1Default, "metadata1"); MetadataBuilder type1DefaultSchemaMetadata2Builder = newMetadata(type1Default, "metadata2"); MetadataBuilder type1Schema1Metadata1Builder = newMetadata(type1Schema1Builder, "customMetadata11"); MetadataBuilder type1Schema1Metadata2Builder = newMetadata(type1Schema1Builder, "customMetadata12"); MetadataBuilder type1Schema2Metadata1Builder = newMetadata(type1Schema2Builder, "customMetadata21"); MetadataBuilder type1Schema2Metadata2Builder = newMetadata(type1Schema2Builder, "customMetadata22"); MetadataBuilder type2DefaultSchemaMetadata1Builder = newMetadata(type2Default, "metadata1"); MetadataBuilder type2DefaultSchemaMetadata2Builder = newMetadata(type2Default, "metadata2"); MetadataBuilder type2Schema1Metadata1Builder = newMetadata(type2Schema1Builder, "customMetadata11"); MetadataBuilder type2Schema1Metadata2Builder = newMetadata(type2Schema1Builder, "customMetadata12"); MetadataBuilder type2Schema2Metadata1Builder = newMetadata(type2Schema2Builder, "customMetadata21"); MetadataBuilder type2Schema2Metadata2Builder = newMetadata(type2Schema2Builder, "customMetadata22"); types = typesBuilder.build(typesFactory, getModelLayerFactory()); if (testCase.equals(givenBuilderObtainedFromManager) || testCase.equals(givenFinalEnityObtainedFromManager)) { manager.saveUpdateSchemaTypes(typesBuilder); types = getModelLayerFactory().getMetadataSchemasManager().getSchemaTypes("zeCollection"); typesBuilder = MetadataSchemaTypesBuilder.modify(types, new DefaultClassProvider()); } builderMode = testCase.equals(givenBuilder) || testCase.equals(givenBuilderObtainedFromManager); } private MetadataBuilder newMetadata(MetadataSchemaBuilder schema, String code) { return schema.create(code).setType(MetadataValueType.STRING).setDefaultRequirement(true); } @Test public void whenSearchingTypeFromTypesThenFindIt() throws Exception { validateCanFindSchemaTypeFromSchemaTypes("type1"); validateCanFindSchemaTypeFromSchemaTypes("type2"); validateCannotFindSchemaTypeFromSchemaTypes("type3"); validateCannotFindSchemaTypeFromSchemaTypes("type2_schema3"); validateCannotFindSchemaTypeFromSchemaTypes("type2_schema2_customMetadata22"); } @Test public void whenSearchingSchemaFromTypesThenFindIt() throws Exception { validateCanFindSchemaFromSchemaTypes("type1_default"); validateCanFindSchemaFromSchemaTypes("type1_schema1"); validateCanFindSchemaFromSchemaTypes("type1_schema2"); validateCanFindSchemaFromSchemaTypes("type2_default"); validateCanFindSchemaFromSchemaTypes("type2_schema1"); validateCanFindSchemaFromSchemaTypes("type2_schema2"); validateCannotFindSchemaFromSchemaTypes("type2"); validateCannotFindSchemaFromSchemaTypes("type2_schema3"); validateCannotFindSchemaFromSchemaTypes("type2_schema2_customMetadata22"); } @Test public void whenSearchingMetadataFromTypesThenFindIt() throws Exception { validateCanFindMetadataFromSchemaTypes("type1_default_metadata1"); validateCanFindMetadataFromSchemaTypes("type1_default_metadata2"); validateCanFindMetadataFromSchemaTypes("type1_schema1_metadata1"); validateCanFindMetadataFromSchemaTypes("type1_schema1_metadata2"); validateCanFindMetadataFromSchemaTypes("type1_schema2_metadata1"); validateCanFindMetadataFromSchemaTypes("type1_schema2_metadata2"); validateCanFindMetadataFromSchemaTypes("type1_schema1_customMetadata11"); validateCanFindMetadataFromSchemaTypes("type1_schema1_customMetadata12"); validateCanFindMetadataFromSchemaTypes("type1_schema2_customMetadata21"); validateCanFindMetadataFromSchemaTypes("type1_schema2_customMetadata22"); validateCanFindMetadataFromSchemaTypes("type2_default_metadata1"); validateCanFindMetadataFromSchemaTypes("type2_default_metadata2"); validateCanFindMetadataFromSchemaTypes("type2_schema1_metadata1"); validateCanFindMetadataFromSchemaTypes("type2_schema1_metadata2"); validateCanFindMetadataFromSchemaTypes("type2_schema2_metadata1"); validateCanFindMetadataFromSchemaTypes("type2_schema2_metadata2"); validateCanFindMetadataFromSchemaTypes("type2_schema1_customMetadata11"); validateCanFindMetadataFromSchemaTypes("type2_schema1_customMetadata12"); validateCanFindMetadataFromSchemaTypes("type2_schema2_customMetadata21"); validateCanFindMetadataFromSchemaTypes("type2_schema2_customMetadata22"); validateCannotFindMetadataFromSchemaTypes("type2"); validateCannotFindMetadataFromSchemaTypes("type2_schema2"); validateCannotFindMetadataFromSchemaTypes("type2_schema2_customMetadata3"); } @Test public void whenSearchingSchemaFromTypeThenFindIt() throws Exception { validateCanFindCustomSchemaFromSchemaType("type1_default", "type1"); validateCanFindCustomSchemaFromSchemaType("default", "type1"); validateCanFindCustomSchemaFromSchemaType("type1_schema1", "type1"); validateCanFindCustomSchemaFromSchemaType("schema1", "type1"); validateCanFindCustomSchemaFromSchemaType("type1_schema2", "type1"); validateCanFindCustomSchemaFromSchemaType("schema2", "type1"); validateCannotFindCustomSchemaFromSchemaType("type2_default", "type1"); validateCannotFindCustomSchemaFromSchemaType("type2_schema1", "type1"); validateCannotFindCustomSchemaFromSchemaType("type2_schema2", "type1"); validateCannotFindCustomSchemaFromSchemaType("type1_default", "type2"); validateCannotFindCustomSchemaFromSchemaType("type1_schema1", "type2"); validateCannotFindCustomSchemaFromSchemaType("type1_schema2", "type2"); validateCanFindCustomSchemaFromSchemaType("type2_default", "type2"); validateCanFindCustomSchemaFromSchemaType("default", "type2"); validateCanFindCustomSchemaFromSchemaType("type2_schema1", "type2"); validateCanFindCustomSchemaFromSchemaType("schema1", "type2"); validateCanFindCustomSchemaFromSchemaType("type2_schema2", "type2"); validateCanFindCustomSchemaFromSchemaType("schema2", "type2"); } @Test public void whenSearchingMetadataFromTypeThenFindIt() throws Exception { validateCanFindMetadataFromSchemaType("type1_default_metadata1", "type1"); validateCanFindMetadataFromSchemaType("type1_default_metadata2", "type1"); validateCanFindMetadataFromSchemaType("type1_schema1_metadata1", "type1"); validateCanFindMetadataFromSchemaType("type1_schema1_metadata2", "type1"); validateCanFindMetadataFromSchemaType("type1_schema2_metadata1", "type1"); validateCanFindMetadataFromSchemaType("type1_schema2_metadata2", "type1"); validateCanFindMetadataFromSchemaType("type1_schema1_customMetadata11", "type1"); validateCanFindMetadataFromSchemaType("type1_schema1_customMetadata12", "type1"); validateCanFindMetadataFromSchemaType("type1_schema2_customMetadata21", "type1"); validateCanFindMetadataFromSchemaType("type1_schema2_customMetadata22", "type1"); validateCannotFindMetadataFromSchemaType("type2_default_metadata1", "type1"); validateCannotFindMetadataFromSchemaType("type2_default_metadata2", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema1_metadata1", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema1_metadata2", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema2_metadata1", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema2_metadata2", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema1_customMetadata11", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema1_customMetadata12", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema2_customMetadata21", "type1"); validateCannotFindMetadataFromSchemaType("type2_schema2_customMetadata22", "type1"); validateCannotFindMetadataFromSchemaType("type1_default_metadata1", "type2"); validateCannotFindMetadataFromSchemaType("type1_default_metadata2", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema1_metadata1", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema1_metadata2", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema2_metadata1", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema2_metadata2", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema1_customMetadata11", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema1_customMetadata12", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema2_customMetadata21", "type2"); validateCannotFindMetadataFromSchemaType("type1_schema2_customMetadata22", "type2"); validateCanFindMetadataFromSchemaType("type2_default_metadata1", "type2"); validateCanFindMetadataFromSchemaType("type2_default_metadata2", "type2"); validateCanFindMetadataFromSchemaType("type2_schema1_metadata1", "type2"); validateCanFindMetadataFromSchemaType("type2_schema1_metadata2", "type2"); validateCanFindMetadataFromSchemaType("type2_schema2_metadata1", "type2"); validateCanFindMetadataFromSchemaType("type2_schema2_metadata2", "type2"); validateCanFindMetadataFromSchemaType("type2_schema1_customMetadata11", "type2"); validateCanFindMetadataFromSchemaType("type2_schema1_customMetadata12", "type2"); validateCanFindMetadataFromSchemaType("type2_schema2_customMetadata21", "type2"); validateCanFindMetadataFromSchemaType("type2_schema2_customMetadata22", "type2"); validateCannotFindMetadataFromSchemaTypes("schema3"); validateCannotFindMetadataFromSchemaTypes("type2_schema3"); validateCannotFindMetadataFromSchemaTypes("type2"); validateCannotFindMetadataFromSchemaTypes("type2_schema2_customMetadata3"); } @Test public void whenSearchingMetadataFromSchemaThenFindIt() throws Exception { validateCanFindMetadataFromSchema("type1_default_metadata1", "type1_default"); validateCanFindMetadataFromSchema("metadata1", "type1_default"); validateCanFindMetadataFromSchema("type1_default_metadata2", "type1_default"); validateCanFindMetadataFromSchema("metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema1_metadata1", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema1_metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema2_metadata1", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema2_metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata11", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata12", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata21", "type1_default"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata22", "type1_default"); validateCannotFindMetadataFromSchema("type2_default_metadata1", "type1_default"); validateCannotFindMetadataFromSchema("type2_default_metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema1_metadata1", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema1_metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema2_metadata1", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema2_metadata2", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata11", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata12", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata21", "type1_default"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata22", "type1_default"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata1", "type1_schema1", "type1_schema1_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata1", "type1_schema1", "type1_schema1_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata2", "type1_schema1", "type1_schema1_metadata2"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata2", "type1_schema1", "type1_schema1_metadata2"); validateCanFindMetadataFromSchema("type1_schema1_metadata1", "type1_schema1"); validateCanFindMetadataFromSchema("metadata1", "type1_schema1"); validateCanFindMetadataFromSchema("type1_schema1_metadata2", "type1_schema1"); validateCanFindMetadataFromSchema("metadata2", "type1_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_metadata1", "type1_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_metadata2", "type1_schema1"); validateCanFindMetadataFromSchema("type1_schema1_customMetadata11", "type1_schema1"); validateCanFindMetadataFromSchema("customMetadata11", "type1_schema1"); validateCanFindMetadataFromSchema("type1_schema1_customMetadata12", "type1_schema1"); validateCanFindMetadataFromSchema("customMetadata12", "type1_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata21", "type1_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata22", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_default_metadata1", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_default_metadata2", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema1_metadata1", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema1_metadata2", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_metadata1", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_metadata2", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata11", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata12", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata21", "type1_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata22", "type1_schema1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata1", "type1_schema2", "type1_schema2_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata1", "type1_schema2", "type1_schema2_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata2", "type1_schema2", "type1_schema2_metadata2"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type1_default_metadata2", "type1_schema2", "type1_schema2_metadata2"); validateCannotFindMetadataFromSchema("type1_schema1_metadata1", "type1_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_metadata2", "type1_schema2"); validateCanFindMetadataFromSchema("type1_schema2_metadata1", "type1_schema2"); validateCanFindMetadataFromSchema("metadata1", "type1_schema2"); validateCanFindMetadataFromSchema("type1_schema2_metadata2", "type1_schema2"); validateCanFindMetadataFromSchema("metadata2", "type1_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata11", "type1_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata12", "type1_schema2"); validateCanFindMetadataFromSchema("type1_schema2_customMetadata21", "type1_schema2"); validateCanFindMetadataFromSchema("customMetadata21", "type1_schema2"); validateCanFindMetadataFromSchema("type1_schema2_customMetadata22", "type1_schema2"); validateCanFindMetadataFromSchema("customMetadata22", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_default_metadata1", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_default_metadata2", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_metadata1", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_metadata2", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema2_metadata1", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema2_metadata2", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata11", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata12", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata21", "type1_schema2"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata22", "type1_schema2"); validateCannotFindMetadataFromSchema("type1_default_metadata1", "type2_default"); validateCannotFindMetadataFromSchema("type1_default_metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema1_metadata1", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema1_metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema2_metadata1", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema2_metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata11", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata12", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata21", "type2_default"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata22", "type2_default"); validateCanFindMetadataFromSchema("type2_default_metadata1", "type2_default"); validateCanFindMetadataFromSchema("metadata1", "type2_default"); validateCanFindMetadataFromSchema("type2_default_metadata2", "type2_default"); validateCanFindMetadataFromSchema("metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema1_metadata1", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema1_metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema2_metadata1", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema2_metadata2", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata11", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata12", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata21", "type2_default"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata22", "type2_default"); validateCannotFindMetadataFromSchema("type1_default_metadata1", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_default_metadata2", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema1_metadata1", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema1_metadata2", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_metadata1", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_metadata2", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata11", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata12", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata21", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata22", "type2_schema1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata1", "type2_schema1", "type2_schema1_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata1", "type2_schema1", "type2_schema1_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata2", "type2_schema1", "type2_schema1_metadata2"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata2", "type2_schema1", "type2_schema1_metadata2"); validateCanFindMetadataFromSchema("type2_schema1_metadata1", "type2_schema1"); validateCanFindMetadataFromSchema("metadata1", "type2_schema1"); validateCanFindMetadataFromSchema("type2_schema1_metadata2", "type2_schema1"); validateCanFindMetadataFromSchema("metadata2", "type2_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_metadata1", "type2_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_metadata2", "type2_schema1"); validateCanFindMetadataFromSchema("type2_schema1_customMetadata11", "type2_schema1"); validateCanFindMetadataFromSchema("customMetadata11", "type2_schema1"); validateCanFindMetadataFromSchema("type2_schema1_customMetadata12", "type2_schema1"); validateCanFindMetadataFromSchema("customMetadata12", "type2_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata21", "type2_schema1"); validateCannotFindMetadataFromSchema("type2_schema2_customMetadata22", "type2_schema1"); validateCannotFindMetadataFromSchema("type1_default_metadata1", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_default_metadata2", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_metadata1", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_metadata2", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema2_metadata1", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema2_metadata2", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata11", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema1_customMetadata12", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata21", "type2_schema2"); validateCannotFindMetadataFromSchema("type1_schema2_customMetadata22", "type2_schema2"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata1", "type2_schema2", "type2_schema2_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata1", "type2_schema2", "type2_schema2_metadata1"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata2", "type2_schema2", "type2_schema2_metadata2"); validateCanFindMetadataFromSchemaAndMetadataHasCode("type2_default_metadata2", "type2_schema2", "type2_schema2_metadata2"); validateCannotFindMetadataFromSchema("type2_schema1_metadata1", "type2_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_metadata2", "type2_schema2"); validateCanFindMetadataFromSchema("type2_schema2_metadata1", "type2_schema2"); validateCanFindMetadataFromSchema("metadata1", "type2_schema2"); validateCanFindMetadataFromSchema("type2_schema2_metadata2", "type2_schema2"); validateCanFindMetadataFromSchema("metadata2", "type2_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata11", "type2_schema2"); validateCannotFindMetadataFromSchema("type2_schema1_customMetadata12", "type2_schema2"); validateCanFindMetadataFromSchema("type2_schema2_customMetadata21", "type2_schema2"); validateCanFindMetadataFromSchema("customMetadata21", "type2_schema2"); validateCanFindMetadataFromSchema("type2_schema2_customMetadata22", "type2_schema2"); validateCanFindMetadataFromSchema("customMetadata22", "type2_schema2"); } private void validateCannotFindSchemaTypeFromSchemaTypes(String typeName) { // System.out.println("validateCannotFindSchemaTypeFromSchemaTypes(\"" + typeName + "\");"); try { validateCanFindSchemaTypeFromSchemaTypes(typeName); fail("An exception was expected"); } catch (Exception e) { } } private void validateCanFindSchemaTypeFromSchemaTypes(String typeName) throws Exception { // System.out.println("validateCanFindSchemaTypeFromSchemaTypes(\"" + typeName + "\");"); if (builderMode) { MetadataSchemaTypeBuilder typeBuilder = typesBuilder.getSchemaType(typeName); assertThat(typeBuilder.getCode()).isEqualTo(typeName); } else { MetadataSchemaType type = types.getSchemaType(typeName); assertThat(type.getCode()).isEqualTo(typeName); } } private void validateCannotFindSchemaFromSchemaTypes(String code) { // System.out.println("validateCannotFindSchemaFromSchemaTypes(\"" + code + "\");"); try { validateCanFindSchemaFromSchemaTypes(code); fail("An exception was expected"); } catch (Exception e) { } } private void validateCanFindSchemaFromSchemaTypes(String code) throws Exception { // System.out.println("validateCanFindSchemaFromSchemaTypes(\"" + code + "\");"); if (builderMode) { MetadataSchemaBuilder schema = typesBuilder.getSchema(code); assertTrue("Invalid schema : " + schema.getCode(), schema.getCode().equals(code) || schema.getCode().equals(code)); } else { MetadataSchema schema = types.getSchema(code); assertTrue(schema.getCode().equals(code) || schema.getCode().equals(code)); } } private void validateCannotFindMetadataFromSchemaTypes(String code) { // System.out.println("validateCannotFindMetadataFromSchemaTypes(\"" + code + "\");"); try { validateCanFindMetadataFromSchemaTypes(code); fail("An exception was expected"); } catch (Exception e) { } } private void validateCanFindMetadataFromSchemaTypes(String code) throws Exception { // System.out.println("validateCanFindMetadataFromSchemaTypes(\"" + code + "\");"); if (builderMode) { MetadataBuilder metadata = typesBuilder.getMetadata(code); assertThat(metadata.getCode()).isEqualTo(code); } else { Metadata metadata = types.getMetadata(code); assertThat(metadata.getCode()).isEqualTo(code); } } private void validateCannotFindCustomSchemaFromSchemaType(String codeOrCode, String type) { // System.out.println("validateCannotFindCustomSchemaFromSchemaType(\"" + codeOrCode + "\", \"" + type + "\");"); try { validateCanFindCustomSchemaFromSchemaType(codeOrCode, type); fail("An exception was expected"); } catch (Exception e) { } } //@formatter:off private void validateCanFindCustomSchemaFromSchemaType(String codeOrCode, String type) throws Exception { // System.out.println("validateCanFindCustomSchemaFromSchemaType(\"" + codeOrCode + "\", \"" + type + "\");"); if (builderMode) { MetadataSchemaTypeBuilder schemaTypeBuilder = typesBuilder.getSchemaType(type); MetadataSchemaBuilder schemaBuilder = schemaTypeBuilder.getSchema(codeOrCode); assertTrue("Unexpected schema : " + schemaBuilder.getCode() + " in type " + type + ", expected : " + codeOrCode, schemaBuilder.getLocalCode().equals(codeOrCode) || schemaBuilder.getCode().equals(codeOrCode)); } else { MetadataSchemaType schemaType = types.getSchemaType(type); MetadataSchema schemaBuilder = schemaType.getSchema(codeOrCode); assertTrue("Unexpected schema : " + schemaBuilder.getCode() + " in type " + type + ", expected : " + codeOrCode, schemaBuilder.getLocalCode().equals(codeOrCode) || schemaBuilder.getCode().equals(codeOrCode)); } } //@formatter:on private void validateCannotFindMetadataFromSchemaType(String codeOrCode, String type) { // System.out.println("validateCannotFindMetadataFromSchemaType(\"" + codeOrCode + "\", \"" + type + "\");"); try { validateCanFindMetadataFromSchemaType(codeOrCode, type); fail("An exception was expected"); } catch (Exception e) { } } private void validateCanFindMetadataFromSchemaType(String code, String type) throws Exception { // System.out.println("validateCanFindMetadataFromSchemaType(\"" + code + "\", \"" + type + "\");"); if (builderMode) { MetadataSchemaTypeBuilder schemaTypeBuilder = typesBuilder.getSchemaType(type); MetadataBuilder metadata = schemaTypeBuilder.getMetadata(code); assertThat(metadata.getCode()).isEqualTo(code); } else { MetadataSchemaType schemaType = types.getSchemaType(type); Metadata metadata = schemaType.getMetadata(code); try { assertThat(metadata.getCode()).isEqualTo(code); } catch (RuntimeException e) { System.out.print("oh bobo"); } } } private void validateCannotFindMetadataFromSchema(String codeOrCode, String type) { // System.out.println("validateCannotFindMetadataFromSchema(\"" + codeOrCode + "\", \"" + type + "\");"); try { validateCanFindMetadataFromSchema(codeOrCode, type); fail("An exception was expected"); } catch (Exception e) { } } private void validateCanFindMetadataFromSchema(String codeOrCode, String schemaCode) throws Exception { validateCanFindMetadataFromSchemaAndMetadataHasCode(codeOrCode, schemaCode, codeOrCode); } private void validateCanFindMetadataFromSchemaAndMetadataHasCode(String codeOrCode, String schemaCode, String expectedCode) throws Exception { // System.out.println("validateCanFindMetadataFromSchema(\"" + codeOrCode + "\", \"" + schemaCode + "\");"); if (builderMode) { MetadataSchemaBuilder schemaBuilder = typesBuilder.getSchema(schemaCode); MetadataBuilder metadata = schemaBuilder.getMetadata(codeOrCode); if (expectedCode.contains("_")) { assertThat(metadata.getCode()).isEqualTo(expectedCode); } else { assertThat(metadata.getLocalCode()).isEqualTo(expectedCode); } } else { MetadataSchema schema = types.getSchema(schemaCode); assertEquals(schemaCode, schema.getCode()); Metadata metadata = schema.getMetadata(codeOrCode); if (expectedCode.contains("_")) { assertThat(metadata.getCode()).isEqualTo(expectedCode); } else { assertThat(metadata.getLocalCode()).isEqualTo(expectedCode); } } } private List<String> allMetadataCompleteNames() { List<String> names = new ArrayList<String>(); names.add("type1_default_metadata1"); names.add("type1_default_metadata2"); names.add("type1_schema1_metadata1"); names.add("type1_schema1_metadata2"); names.add("type1_schema2_metadata1"); names.add("type1_schema2_metadata2"); names.add("type1_schema1_customMetadata11"); names.add("type1_schema1_customMetadata12"); names.add("type1_schema2_customMetadata21"); names.add("type1_schema2_customMetadata22"); names.add("type2_default_metadata1"); names.add("type2_default_metadata2"); names.add("type2_schema1_metadata1"); names.add("type2_schema1_metadata2"); names.add("type2_schema2_metadata1"); names.add("type2_schema2_metadata2"); names.add("type2_schema1_customMetadata11"); names.add("type2_schema1_customMetadata12"); names.add("type2_schema2_customMetadata21"); names.add("type2_schema2_customMetadata22"); return names; } private List<String> allMetadataSchemaCompleteNames() { List<String> names = new ArrayList<String>(); names.add("type1_default"); names.add("type1_schema1"); names.add("type1_schema2"); names.add("type2_default"); names.add("type2_schema1"); names.add("type2_schema2"); return names; } private List<String> allMetadataSchemaTypesCompleteNames() { List<String> names = new ArrayList<String>(); names.add("type1"); names.add("type2"); return names; } }