package de.otto.edison.status.domain; import org.junit.Test; import static de.otto.edison.status.domain.ApplicationStatus.applicationStatus; import static de.otto.edison.status.domain.Status.*; import static de.otto.edison.status.domain.StatusDetail.statusDetail; import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; public class ApplicationStatusTest { @Test public void shouldHaveStatusOkIfDetailsAreOk() { // given ApplicationStatus applicationStatus = applicationStatus(mock(ApplicationInfo.class), null, mock(SystemInfo.class), mock(VersionInfo.class), mock(TeamInfo.class), singletonList( statusDetail("bar", OK, "a message")) , emptyList()); // then assertThat(applicationStatus.status, is(OK)); } @Test public void shouldHaveStatusWarningIfDetailsContainWarnings() { // given ApplicationStatus applicationStatus = applicationStatus(mock(ApplicationInfo.class), null, mock(SystemInfo.class), mock(VersionInfo.class), mock(TeamInfo.class), asList( statusDetail("bar", OK, "a message"), statusDetail("foobar", WARNING, "another message") ), emptyList()); // then assertThat(applicationStatus.status, is(WARNING)); } @Test public void shouldHaveStatusErrorIfDetailsContainWarnings() { // given ApplicationStatus applicationStatus = applicationStatus(mock(ApplicationInfo.class), null, mock(SystemInfo.class), mock(VersionInfo.class), mock(TeamInfo.class), asList( statusDetail("bar", OK, "a message"), statusDetail("foobar", ERROR, "another message"), statusDetail("foobar", WARNING, "yet another message") ), emptyList()); // then assertThat(applicationStatus.status, is(ERROR)); } }