package org.lightadmin.core.config.management.rmi; import org.junit.Before; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.runner.RunWith; import org.lightadmin.api.config.annotation.Administration; import org.lightadmin.api.config.management.rmi.GlobalConfigurationManagementService; import org.lightadmin.core.config.context.LightAdminRepositoryRestMvcConfiguration; import org.lightadmin.core.test.IntegrationTest; import org.lightadmin.core.test.LightAdminConfigurationContextLoader; import org.lightadmin.core.test.LightAdminTestConfiguration; import org.lightadmin.core.test.model.Address; import org.lightadmin.core.test.model.Customer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static org.junit.Assert.*; import static org.lightadmin.core.config.domain.unit.ConfigurationUnitsConverter.unitsFromConfiguration; @Category(IntegrationTest.class) @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(loader = LightAdminConfigurationContextLoader.class, classes = {LightAdminTestConfiguration.class, LightAdminRepositoryRestMvcConfiguration.class}) public class GlobalConfigurationManagementServiceImplTest { @Autowired private GlobalConfigurationManagementService globalConfigurationManagementService; @Before public void setUp() throws Exception { globalConfigurationManagementService.removeAllDomainTypeAdministrationConfigurations(); } @Test public void runtimeConfigurationRegistration() { globalConfigurationManagementService.registerDomainTypeConfiguration(unitsFromConfiguration(AddressConfiguration.class)); assertNotNull(globalConfigurationManagementService.getRegisteredDomainTypeConfiguration(Address.class)); } @Test public void runtimeConfigurationRemoval() { globalConfigurationManagementService.registerDomainTypeConfiguration(unitsFromConfiguration(AddressConfiguration.class)); globalConfigurationManagementService.removeDomainTypeAdministrationConfiguration(Address.class); assertNull(globalConfigurationManagementService.getRegisteredDomainTypeConfiguration(Address.class)); } @Test public void runtimeMultipleConfigurationsRegistration() { assertTrue(globalConfigurationManagementService.getRegisteredDomainTypeConfigurations().isEmpty()); globalConfigurationManagementService.registerDomainTypeConfiguration(unitsFromConfiguration(AddressConfiguration.class), unitsFromConfiguration(CustomerConfiguration.class)); assertEquals(2, globalConfigurationManagementService.getRegisteredDomainTypeConfigurations().size()); assertNotNull(globalConfigurationManagementService.getRegisteredDomainTypeConfiguration(Address.class)); assertNotNull(globalConfigurationManagementService.getRegisteredDomainTypeConfiguration(Customer.class)); } @Test public void runtimeConfigurationsCleanup() { globalConfigurationManagementService.registerDomainTypeConfiguration(unitsFromConfiguration(AddressConfiguration.class), unitsFromConfiguration(CustomerConfiguration.class)); globalConfigurationManagementService.removeAllDomainTypeAdministrationConfigurations(); assertTrue(globalConfigurationManagementService.getRegisteredDomainTypeConfigurations().isEmpty()); } @Administration(Address.class) private static class AddressConfiguration { } @Administration(Customer.class) private static class CustomerConfiguration { } }