public void ItShouldRestoreTheToDoStateFromASnapshot() { const string label = "My label"; const string description = "My description"; const ToDoCurrentState currentState = ToDoCurrentState.Waiting; var startedAt = DateTime.Now; var endedAt = DateTime.Now; var snapshot = new ToDoState { Label = label, Description = description, CurrentState = currentState, StartedAt = startedAt, EndedAt = endedAt }; var history = new List <IEvent>(); var todoId = Guid.NewGuid(); var toDo = new Domain.Write.ToDo.ToDo(todoId, history.Count + 1, snapshot, history); Assert.Equal(label, toDo.State.Label); Assert.Equal(description, toDo.State.Description); Assert.Equal(currentState, toDo.State.CurrentState); Assert.Equal(startedAt, toDo.State.StartedAt); Assert.Equal(endedAt, toDo.State.EndedAt); }
protected override void OnInit() { state = new ToDoState(); stateManager = new ToDoState.Manager(state); stateManager.OnIsCompleteChanged += StateHasChanged; stateManager.OnToDoItemAdded += StateHasChanged; }
private static ToDoState ChangeToDosFilterReducer(ToDoState previousState, ChangeToDosFilterAction action) { return(new ToDoState { Filter = action.Filter, NextToDoId = previousState.NextToDoId, ToDos = previousState.ToDos }); }
private static ToDoState AddToDoReducer(ToDoState previousState, AddToDoAction action) { return(new ToDoState { Filter = previousState.Filter, NextToDoId = previousState.NextToDoId + 1, ToDos = previousState.ToDos.AddItem(new ToDo { Id = previousState.NextToDoId, Completed = false, Selected = false, Text = action.Text }) }); }
/// <summary> /// Execute /// </summary> /// <param name="previousState"></param> /// <param name="action"></param> /// <returns></returns> public static ToDoState Execute(ToDoState previousState, object action) { if (previousState == null) { previousState = InitState; } if (action.GetType() == typeof(ChangeToDosFilterAction)) { return(ChangeToDosFilterReducer(previousState, (ChangeToDosFilterAction)action)); } if (action.GetType() == typeof(AddToDoAction)) { return(AddToDoReducer(previousState, (AddToDoAction)action)); } return(new ToDoState() { Filter = previousState.Filter, NextToDoId = previousState.NextToDoId, ToDos = ToDosReducer.Execute(previousState.ToDos, action) }); }