@Test
public void shouldRunAllShutteringExecutorsAndFireTheSuccessEvent() throws Exception {

    final String commandName = "SHUTTER";
    final UUID commandId = randomUUID();
    final SuspensionCommand suspensionCommand = mock(SuspensionCommand.class);
    final ZonedDateTime stateChangedAt = new UtcClock().now();
    when(suspensionCommand.getName()).thenReturn(commandName);
    when(clock.now()).thenReturn(stateChangedAt);
    final List<SuspensionResult> results = singletonList(mock(SuspensionResult.class));
    final List<SuspensionResult> successfulResults = singletonList(mock(SuspensionResult.class));
    final List<SuspensionResult> failureResults = emptyList();
    when(suspendablesRunner.findAndRunSuspendables(
            commandId,
            suspensionCommand
    )).thenReturn(results);
    when(suspensionResultsMapper.getFailedResults(results)).thenReturn(failureResults);
    when(suspensionResultsMapper.getSuccessfulResults(results)).thenReturn(successfulResults);
    suspensionBean.runSuspension(commandId, suspensionCommand);
    final InOrder inOrder = inOrder(
            logger,
            systemCommandStateChangedEventFirer,
            suspensionPostProcess);
    inOrder.verify(logger).info("Running SHUTTER");
    inOrder.verify(systemCommandStateChangedEventFirer).fire(systemCommandStateChangedEventCaptor.capture());
    inOrder.verify(logger).info("SHUTTER ran with 1 success(es) and 0 error(s)");
    inOrder.verify(suspensionPostProcess).completeSuspensionSuccessfully(successfulResults, commandId, suspensionCommand);
}