package com.processpuzzle.application.domain; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.application.security.domain.User; import com.processpuzzle.application.security.domain.UserRepository; import com.processpuzzle.litest.template.DefaultApplicationFixture; import com.processpuzzle.litest.testcase.GenericTestSuite; import com.processpuzzle.persistence.domain.DefaultUnitOfWork; import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration; import com.processpuzzle.user_session.domain.UserRequestManager; public abstract class ApplicationTest<A extends Application, F extends DefaultApplicationFixture<A>> extends GenericTestSuite<A, F>{ protected static final String DEFAULT_USER_NAME = "ProcessPuzzle"; protected static final String DEFAULT_USER_PASSWORD = "ProcessPuzzle"; protected F applicationFixture; protected ApplicationRepository applicationRepository; protected UserRepository userRepository; protected ProcessPuzzleContext applicationContext; public ApplicationTest() { super( DomainTierTestConfiguration.FIXTURE_CONTAINER_DEFINITION_PATH ); } @Override public void beforeEachTest() { super.beforeEachTest(); try{ determineApplicationRepository(); }catch( InstantiationException e ){ e.printStackTrace(); } } //Protected, private helper methods protected void changeDefaultUserPassordTo(String newPassword) { User defaultUser = findDefaultUser(); defaultUser.changePassword(newPassword); DefaultUnitOfWork work = new DefaultUnitOfWork(true); userRepository.update(work, defaultUser); work.finish(); } protected void determineApplicationContext() { applicationContext = UserRequestManager.getInstance().getApplicationContext(); } protected void determineApplicationRepository() throws InstantiationException{ applicationRepository = ApplicationRepository.getInstance( DomainTierTestConfiguration.APPLICATION_REPOSITORY_STORAGE_PATH ); } protected void determineUserRepository() { determineApplicationContext(); userRepository = (UserRepository) applicationContext.getRepository(UserRepository.class); } protected User findDefaultUser() { DefaultUnitOfWork work = new DefaultUnitOfWork(true); User defaultUser = userRepository.findUserByName(work, DEFAULT_USER_NAME); work.finish(); return defaultUser; } }