package com.constellio.model.services.schemas.builders;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import com.constellio.sdk.tests.ConstellioTest;
public class AllowedReferencesBuilderTest extends ConstellioTest {
AllowedReferencesBuilder allowedReferencesBuilder;
@Mock MetadataSchemaTypeBuilder zeType;
@Mock MetadataSchemaTypeBuilder otherType;
@Mock MetadataSchemaBuilder zeTypeDefaultSchema;
@Mock MetadataSchemaBuilder zeTypeCustomSchema;
@Mock MetadataSchemaBuilder otherTypeDefaultSchema;
@Before
public void setUp()
throws Exception {
allowedReferencesBuilder = new AllowedReferencesBuilder();
when(zeType.getCode()).thenReturn("zeType");
when(otherType.getCode()).thenReturn("zeType");
when(zeTypeDefaultSchema.getCode()).thenReturn("zeType_default");
when(zeTypeCustomSchema.getCode()).thenReturn("zeType_custom");
when(otherTypeDefaultSchema.getCode()).thenReturn("otherType_default");
}
@Test
public void whenSettingSchemaTypeThenSchemaTypeSet() {
allowedReferencesBuilder.set(zeType);
assertThat(allowedReferencesBuilder.getSchemaType()).isEqualTo("zeType");
}
@Test(expected = AllowedReferencesBuilderRuntimeException.SchemaTypeAlreadySet.class)
public void whenSettingSchemaTypeTwiceThenExceptionThrown() {
allowedReferencesBuilder.set(zeType).set(zeType);
}
@Test
public void whenAddingSchemasThenSchemasAdded() {
allowedReferencesBuilder.add(zeTypeDefaultSchema).add(zeTypeCustomSchema);
assertThat(allowedReferencesBuilder.getSchemas()).containsOnly("zeType_default", "zeType_custom");
}
@Test(expected = AllowedReferencesBuilderRuntimeException.CannotHaveBothATypeAndSchemas.class)
public void givenAllowedSchemasWhenSettingSchemaTypeThenExceptionThrown() {
allowedReferencesBuilder.add(zeTypeDefaultSchema).add(zeTypeCustomSchema);
allowedReferencesBuilder.set(zeType);
}
@Test(expected = AllowedReferencesBuilderRuntimeException.CannotHaveBothATypeAndSchemas.class)
public void givenAllowedSchemaTypeWhenAddingSchemaThenExceptionThrown() {
allowedReferencesBuilder.set(zeType).add(zeTypeDefaultSchema);
}
@Test(expected = AllowedReferencesBuilderRuntimeException.AllSchemasMustBeOfSameType.class)
public void givenSchemasOfOneTypeWhenAddingSchemaOfOtherTypeThenExceptionThrown() {
allowedReferencesBuilder.add(zeTypeDefaultSchema).add(otherTypeDefaultSchema);
}
}