package me.atam.atam4jsampleapp;
import me.atam.atam4j.dummytests.PassingTestWithNoCategory;
import me.atam.atam4j.dummytests.PassingTestsWithCategories;
import me.atam.atam4jdomain.IndividualTestResult;
import me.atam.atam4jdomain.TestsRunResult;
import me.atam.atam4jsampleapp.testsupport.AcceptanceTest;
import me.atam.atam4jsampleapp.testsupport.Atam4jApplicationStarter;
import org.junit.Test;
import javax.ws.rs.core.Response;
import static me.atam.atam4jsampleapp.testsupport.AcceptanceTestTimeouts.TEN_SECONDS_IN_MILLIS;
import static org.hamcrest.CoreMatchers.hasItem;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
public class PassingTestsByCategoryAcceptanceTest extends AcceptanceTest {
@Test
public void givenPassingTestsWithMultipleCategories_whenTestsByCategoryEndpointCalledAfterTestRun_thenOKMessageReceivedForOneTestOnly(){
//given
dropwizardTestSupportAppConfig = Atam4jApplicationStarter.startApplicationWith(0, PassingTestsWithCategories.class, 1);
//when
Response response = getResponseFromTestsWithCategoryOnceTestRunHasCompleted("A");
//then
TestsRunResult testRunResult = response.readEntity(TestsRunResult.class);
assertThat(response.getStatus(), is(Response.Status.OK.getStatusCode()));
assertThat(testRunResult.getTests().size(), is(1));
assertThat(
testRunResult.getTests(),
hasItem(new IndividualTestResult(PassingTestsWithCategories.class.getName(), "testThatPassesWithCategoryA", "A", true))
);
}
@Test
public void givenPassingTests_withMultiplCategories_whenTestsByCategoryEndpointCalledBeforeTestRun_thenTooEarlyMessageReceived(){
//given
dropwizardTestSupportAppConfig = Atam4jApplicationStarter
.startApplicationWith(TEN_SECONDS_IN_MILLIS, PassingTestWithNoCategory.class, 1);
//when
Response testRunResultFromServer = getTestRunResultFromServer(getTestsURI()+"/A");
//then
assertThat(testRunResultFromServer.getStatus(), is(Response.Status.OK.getStatusCode()));
assertThat(
testRunResultFromServer.readEntity(TestsRunResult.class).getStatus(),
is(TestsRunResult.Status.TOO_EARLY)
);
}
@Test
public void givenPassingTestsWithMultipleCategories_whenTestsByCategoryEndpointCalledAfterTestRunWithInvalidCategory_thenNotFoundMessageReceived(){
//given
dropwizardTestSupportAppConfig = Atam4jApplicationStarter.startApplicationWith(0, PassingTestsWithCategories.class, 1);
//when
Response response = getResponseFromTestsWithCategoryOnceTestRunHasCompleted("non-existent-category");
//then
assertThat(response.getStatus(), is(Response.Status.NOT_FOUND.getStatusCode()));
}
@Test
public void givenPassingTests_whenTestsEndpointCalledAfterTestRun_thenOKMessageReceivedForTwoTests(){
//given
dropwizardTestSupportAppConfig = Atam4jApplicationStarter.startApplicationWith(0, PassingTestsWithCategories.class, 1);
//when
Response response = getResponseFromTestsEndpointOnceTestsRunHasCompleted();
//then
TestsRunResult testRunResult = response.readEntity(TestsRunResult.class);
assertThat(response.getStatus(), is(Response.Status.OK.getStatusCode()));
assertThat(testRunResult.getTests().size(), is(2));
assertThat(testRunResult.getTests(),
hasItem(new IndividualTestResult(PassingTestsWithCategories.class.getName(), "testThatPassesWithCategoryA", "A", true))
);
assertThat(testRunResult.getTests(),
hasItem(new IndividualTestResult(PassingTestsWithCategories.class.getName(), "testThatPassesWithCategoryB", "B", true))
);
}
}