package org.lightadmin.core.config.domain.scope;
import org.junit.Test;
import org.lightadmin.api.config.builder.ScopesConfigurationUnitBuilder;
import org.lightadmin.api.config.unit.ScopesConfigurationUnit;
import org.lightadmin.api.config.utils.DomainTypePredicates;
import org.lightadmin.core.config.domain.unit.DomainConfigurationUnitType;
import static org.junit.Assert.*;
import static org.lightadmin.api.config.utils.ScopeMetadataUtils.all;
import static org.lightadmin.api.config.utils.ScopeMetadataUtils.filter;
public class DefaultScopesConfigurationUnitBuilderTest {
@Test
public void defaultConfigurationUnitCreatedForDomainType() {
ScopesConfigurationUnit configurationUnit = defaultScopesBuilder().build();
assertEquals(DomainConfigurationUnitType.SCOPES, configurationUnit.getDomainConfigurationUnitType());
assertEquals(DomainType.class, configurationUnit.getDomainType());
assertScopesDefined(configurationUnit, "All");
}
@Test
public void allScopesDefined() throws Exception {
ScopesConfigurationUnit configurationUnit = defaultScopesBuilder()
.scope("Scope #1", all())
.scope("Scope #2", filter(DomainTypePredicates.alwaysTrue()))
.build();
assertScopesDefined(configurationUnit, "Scope #1", "Scope #2");
}
@Test
public void defaultScopeSetByDefault() throws Exception {
ScopesConfigurationUnit configurationUnit = defaultScopesBuilder()
.scope("Scope #1", all())
.scope("Scope #2", filter(DomainTypePredicates.alwaysTrue()))
.build();
assertTrue(configurationUnit.getScope("Scope #1").isDefaultScope());
}
@Test
public void customSetDefaultScope() throws Exception {
ScopesConfigurationUnit configurationUnit = defaultScopesBuilder()
.scope("Scope #1", all())
.scope("Scope #2", filter(DomainTypePredicates.alwaysTrue()).defaultScope(true))
.build();
assertTrue(configurationUnit.getScope("Scope #2").isDefaultScope());
}
private void assertScopesDefined(ScopesConfigurationUnit configurationUnit, String... scopeNames) {
for (String scopeName : scopeNames) {
assertNotNull(configurationUnit.getScope(scopeName));
}
}
private ScopesConfigurationUnitBuilder defaultScopesBuilder() {
return new DefaultScopesConfigurationUnitBuilder(DomainType.class);
}
private static class DomainType {
}
}