@Before
  public void setup() {
    mockClock = mock(Clock.class);
    when(mockClock.millis()).thenReturn(0L);

    mockRepository = mock(WordRepository.class);
    when(mockRepository.getRandomWord()).thenReturn(Observable.just(testWord));

    //noinspection unchecked
    mockStore = mock(Store.class);

    actionCreator = new ActionCreator(mockStore, mockRepository, mockClock);
  }
  @Test
  public void testBonusTimeCappedForBottomLetterPressedWithCorrectAnswer() {
    when(mockStore.state())
        .thenReturn(
            createState(
                "test",
                toListOfLetters("test"),
                singletonList("test"),
                0,
                ActionCreator.GAME_DURATION));
    when(mockClock.millis()).thenReturn(1L);
    actionCreator.bottomLetterPressed();

    ArgumentCaptor<Action> actionCaptor = ArgumentCaptor.forClass(Action.class);
    verify(mockStore, times(2)).dispatch(actionCaptor.capture());

    List<Action> capturedActions = actionCaptor.getAllValues();

    Action.NextGame nextGameAction = (Action.NextGame) capturedActions.get(1);
    assertEquals(nextGameAction.getBonusTime(), 1L);
  }