package com.niklim.clicktrace; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import org.fest.swing.fixture.FrameFixture; import org.junit.After; import org.junit.Before; import com.google.inject.Injector; import com.niklim.clicktrace.controller.ActiveSession; import com.niklim.clicktrace.props.UserProperties; import com.niklim.clicktrace.view.MainView; public abstract class AbstractSystemTest { protected FrameFixture editorFixture; protected ActiveSession activeSession; protected MainView mainView; protected UserProperties props; protected Injector injector; abstract protected TestSessionsData getSessionsData(); @Before public void setUp() { injector = loadInjector(); mainView = injector.getInstance(MainView.class); editorFixture = new FrameFixture(mainView.getFrame()); editorFixture.show(); editorFixture.maximize(); activeSession = injector.getInstance(ActiveSession.class); props = injector.getInstance(UserProperties.class); prepareTestDir(); deleteUserProperties(); } private void deleteUserProperties() { File file = new File("user.properties"); if (file.exists()) { file.delete(); } } protected Injector loadInjector() { return DefaultTestGuiceContext.load(); } private void prepareTestDir() { props.setSessionsDirPath("target/testsessions/"); File sessionDir = new File(props.getSessionsDirPath()); if (!sessionDir.exists()) { sessionDir.mkdir(); } else { fileCleanup(); } copySessions(); } private void copySessions() { try { File testSessionDir = new File("src/test/resources/" + getSessionsData().getPath()); for (File session : testSessionDir.listFiles()) { if (session.isDirectory()) { FileUtils.copyDirectory(session, new File(props.getSessionsDirPath() + session.getName())); } } } catch (IOException e) { throw new RuntimeException(e); } } public void fileCleanup() { File sessionDir = new File(props.getSessionsDirPath()); for (File file : sessionDir.listFiles()) { if (file.isDirectory()) { for (File sub : file.listFiles()) { sub.delete(); } } file.delete(); } } @After public void fixtureCleanup() { if (editorFixture != null) { editorFixture.cleanUp(); } deleteUserProperties(); } protected void delayLong() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } protected void delay() { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } }