public void GivenMessage_ReturnsBrowserScreen() { var message = new SelectWordMessage(Dionysus); var state = _reducer.Reduce(message, _initialState); state.CurrentScreen.Should().BeOfType <VocabularyBrowserScreen>(); }
public WordTutorApplication Reduce(IReduxMessage message, WordTutorApplication currentState) { if (currentState is null) { throw new ArgumentNullException(nameof(currentState)); } if (!(currentState.CurrentScreen is VocabularyBrowserScreen)) { return(currentState); } return((message ?? throw new ArgumentNullException(nameof(message))) switch { ClearSelectedWordMessage _ => currentState.UpdateScreen( (VocabularyBrowserScreen s) => s.ClearSelection()), SelectWordMessage m => currentState.UpdateScreen( (VocabularyBrowserScreen s) => s.WithSelection(m.Word)), OpenScreenForNewWordMessage _ => currentState.OpenScreen( ModifyVocabularyWordScreen.ForNewWord()), OpenScreenForModifyingWordMessage m => currentState.OpenScreen( ModifyVocabularyWordScreen.ForExistingWord(m.Word)), _ => currentState, });
public void GivenMessage_ChangesSelection() { var message = new SelectWordMessage(Dionysus); var state = _reducer.Reduce(message, _initialState); var screen = (VocabularyBrowserScreen)state.CurrentScreen; screen.Selection.Should().Be(Dionysus); }