package com.constellio.model.services.schemas.builders; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import com.constellio.model.entities.EnumWithSmallCode; import com.constellio.model.entities.schemas.MetadataValueType; import com.constellio.model.services.schemas.builders.MetadataBuilderRuntimeException.InvalidAttribute; public class MetadataBuilder_EnumClassTest extends MetadataBuilderTest { @Test public void givenRecordMetadataStructureFactoryDefinedInInheritedMetadataWhenBuildingThenInherited() throws Exception { inheritedMetadataBuilder.defineAsEnum(AValidEnum.class); build(); assertThat(inheritedMetadata.getType()).isSameAs(MetadataValueType.ENUM); assertThat(inheritedMetadata.getEnumClass()).isEqualTo(AValidEnum.class); assertThat(metadataWithInheritance.getEnumClass()).isEqualTo(AValidEnum.class); } @Test public void givenRecordMetadataStructureFactoryDefinedInInheritedMetadataWhenModifyingThenInherited() throws Exception { inheritedMetadataBuilder.defineAsEnum(AValidEnum.class); buildAndModify(); assertThat(inheritedMetadataBuilder.getType()).isSameAs(MetadataValueType.ENUM); assertThat(inheritedMetadataBuilder.getEnumClass()).isEqualTo(AValidEnum.class); assertThat(metadataWithInheritanceBuilder.getEnumClass()).isEqualTo(AValidEnum.class); } @Test(expected = MetadataBuilderRuntimeException.EnumClassMustImplementEnumWithSmallCode.class) public void whenCreatingMetadataWithAnEnumNotImplementingEnumWithSmallCodeThenException() throws Exception { inheritedMetadataBuilder.defineAsEnum(AnInvalidEnum.class); build(); } @Test(expected = InvalidAttribute.class) public void whenCreatingMetadataWithANullEnumclassThenException() throws Exception { inheritedMetadataBuilder.defineAsEnum(null); build(); } public static enum AValidEnum implements EnumWithSmallCode { FIRST_VALUE("F"), SECOND_VALUE("S"); private String code; AValidEnum(String code) { this.code = code; } public String getCode() { return code; } } public static enum AnInvalidEnum { FIRST_VALUE, SECOND_VALUE; } }