package org.lightadmin;
import org.junit.runner.RunWith;
import org.lightadmin.api.config.management.rmi.DataManipulationService;
import org.lightadmin.api.config.management.rmi.GlobalConfigurationManagementService;
import org.lightadmin.page.ListViewPage;
import org.lightadmin.testContext.TestProfileSource;
import org.lightadmin.util.ExtendedWebDriver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.ProfileValueSourceConfiguration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.AnnotationConfigContextLoader;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
import org.springframework.test.context.support.DirtiesContextTestExecutionListener;
import java.net.URL;
import static org.lightadmin.core.config.domain.unit.ConfigurationUnitsConverter.unitsFromConfiguration;
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners(listeners = {
DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class,
AdministrationConfigurationListener.class, LoginListener.class
})
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = SeleniumConfig.class)
@ProfileValueSourceConfiguration(TestProfileSource.class)
public abstract class SeleniumIntegrationTest {
@Autowired
private SeleniumContext seleniumContext;
@Autowired
private GlobalConfigurationManagementService globalConfigurationManagementService;
@Autowired
private DataManipulationService dataManipulationService;
@Autowired
private LoginService loginService;
protected void registerDomainTypeAdministrationConfiguration(Class configurationClass) {
globalConfigurationManagementService.registerDomainTypeConfiguration(unitsFromConfiguration(configurationClass));
}
protected void removeAllDomainTypeAdministrationConfigurations() {
globalConfigurationManagementService.removeAllDomainTypeAdministrationConfigurations();
}
protected void repopulateDatabase() {
truncateDatabase();
populateDatabase();
}
protected void truncateDatabase() {
dataManipulationService.truncateDatabase();
}
protected void populateDatabase() {
dataManipulationService.populateDatabase();
}
protected ExtendedWebDriver webDriver() {
return seleniumContext.getWebDriver();
}
protected URL baseUrl() {
return seleniumContext.getBaseUrl();
}
protected long webDriverTimeout() {
return seleniumContext.getWebDriverWaitTimeout();
}
protected ListViewPage getStartPage() {
return loginService.getStartPage();
}
}