package com.processpuzzle.application.domain; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeThat; import org.junit.Test; public class InstalledAndStoppedApplicationTest extends ApplicationTest<Application, InstalledAndStoppedApplicationFixture> { @Override public void beforeEachTest() { super.beforeEachTest(); assumeThat( sut.getInstallationStatus(), equalTo( Application.InstallationStatus.installed )); assumeThat( sut.getExecutionStatus(), equalTo( Application.ExecutionStatus.stopped )); assumeThat( sut.applicationContext, nullValue()); } @Test( expected = ReinstallationException.class ) public void install_whenApplicationAlreadyInstalled_throwsException() throws ApplicationException { assertThat( sut.getInstallationStatus(), equalTo( Application.InstallationStatus.installed ) ); assertThat( sut.getExecutionStatus(), equalTo( Application.ExecutionStatus.stopped ) ); sut.install(); } @Test public void start_setsExecutionStatusToRunning() throws ApplicationException { sut.start(); determineUserRepository(); assertThat( sut.getExecutionStatus(), equalTo( Application.ExecutionStatus.running )); //TEARDOWN: sut.stop(); } @Test public void start_configuresApplicationsContext() throws ApplicationException { sut.start(); determineUserRepository(); assertThat( sut.applicationContext.isConfigured(), is( true )); //TEARDOWN: sut.stop(); } @Test public void stop_whenApplicationIsStopped_doesNothing() throws ApplicationException { sut.stop(); assertThat( sut.getExecutionStatus(), equalTo( Application.ExecutionStatus.stopped )); } @Test public void unInstall_setsExecutionStatusToStopped() throws ApplicationException { sut.unInstall(); assertThat( sut.getExecutionStatus(), equalTo( Application.ExecutionStatus.stopped )); } @Test public void unInstall_setsInstallationStatusToUnInstalled() throws ApplicationException { sut.unInstall(); assertThat( sut.getInstallationStatus(), equalTo( Application.InstallationStatus.notInstalled )); } }