package de.otto.edison.status.indicator;
import de.otto.edison.status.domain.*;
import de.otto.edison.status.scheduler.EveryTenSecondsScheduler;
import de.otto.edison.status.scheduler.Scheduler;
import org.junit.Test;
import static de.otto.edison.status.domain.ApplicationStatus.applicationStatus;
import static de.otto.edison.status.domain.StatusDetail.statusDetail;
import static java.util.Collections.emptyList;
import static java.util.Collections.singletonList;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class EveryTenSecondsSchedulerTest {
public static final ApplicationStatus SOME_STATUS = applicationStatus(mock(ApplicationInfo.class), null, mock(SystemInfo.class), mock(VersionInfo.class), mock(TeamInfo.class), singletonList(statusDetail("test", Status.OK, "everything is fine")), emptyList());
public static final ApplicationStatus SOME_OTHER_STATUS = applicationStatus(mock(ApplicationInfo.class), null, mock(SystemInfo.class), mock(VersionInfo.class), mock(TeamInfo.class), singletonList(statusDetail("test", Status.ERROR, "some error")), emptyList());
@Test
public void shouldDelegateStatusAggregation() throws Exception {
ApplicationStatusAggregator statusAggregator = mock(ApplicationStatusAggregator.class);
when(statusAggregator.aggregatedStatus()).thenReturn(SOME_STATUS);
Scheduler scheduler = new EveryTenSecondsScheduler(statusAggregator);
scheduler.update();
assertThat(statusAggregator.aggregatedStatus(), is(SOME_STATUS));
}
@Test
public void shouldUpdateStatus() throws Exception {
ApplicationStatusAggregator statusAggregator = mock(ApplicationStatusAggregator.class);
when(statusAggregator.aggregatedStatus())
.thenReturn(SOME_STATUS)
.thenReturn(SOME_OTHER_STATUS);
Scheduler scheduler = new EveryTenSecondsScheduler(statusAggregator);
// when
scheduler.update();
// then
assertThat(statusAggregator.aggregatedStatus(), is(SOME_STATUS));
// when
scheduler.update();
// then
assertThat(statusAggregator.aggregatedStatus(), is(SOME_OTHER_STATUS));
}
}