package org.lightadmin.core.config.domain.configuration;
import org.easymock.EasyMock;
import org.junit.Test;
import org.lightadmin.api.config.unit.EntityMetadataConfigurationUnit;
import org.lightadmin.api.config.utils.EntityNameExtractor;
import org.lightadmin.core.config.domain.unit.DomainConfigurationUnitType;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@SuppressWarnings("unchecked")
public class DefaultEntityMetadataConfigurationUnitBuilderTest {
@Test
public void defaultConfigurationUnitCreatedForDomainType() throws Exception {
final EntityMetadataConfigurationUnit configurationUnit = configurationBuilder().build();
assertEquals(DomainConfigurationUnitType.CONFIGURATION, configurationUnit.getDomainConfigurationUnitType());
assertEquals(DomainType.class, configurationUnit.getDomainType());
}
@Test
public void configurationWithNameFieldExtractorCreated() throws Exception {
final EntityMetadataConfigurationUnit configurationUnit = configurationBuilder()
.nameField("name")
.build();
assertNotNull(configurationUnit.getNameExtractor());
assertEquals("Domain Type Object Name", configurationUnit.getNameExtractor().apply(new DomainType()));
}
@Test
public void configurationWithNameExtractorCreated() throws Exception {
final EntityNameExtractor expectedEntityNameExtractor = EasyMock.createNiceMock(EntityNameExtractor.class);
final EntityMetadataConfigurationUnit configurationUnit = configurationBuilder()
.nameExtractor(expectedEntityNameExtractor)
.build();
assertNotNull(configurationUnit.getNameExtractor());
assertEquals(expectedEntityNameExtractor, configurationUnit.getNameExtractor());
}
private DefaultEntityMetadataConfigurationUnitBuilder configurationBuilder() {
return new DefaultEntityMetadataConfigurationUnitBuilder(DomainType.class);
}
private static class DomainType {
private String name = "Domain Type Object Name";
public String getName() {
return name;
}
}
}