public async Task LoadAsync_CanReadPersistedState(TodoTaskId id, TodoTask.AggregateState state) { // arrange state.Mutate(new TodoTaskCompleted(id)); await _stateStorage.PersistAsync(id, state, AggregateVersion.Emtpy, new Dictionary <string, object>(), CancellationToken.None); // act var(restoredVersion, restoredState) = await _stateStorage.LoadAsync <TodoTask.AggregateState>(id, CancellationToken.None); // assert Assert.Equal(state.ProjectId, restoredState.ProjectId); Assert.Equal(AggregateVersion.Emtpy.Increment(), restoredVersion); }
/// <inheritdoc /> public virtual async Task SaveAsync(TAggregateRoot entity, CancellationToken cancellationToken) { Require.NotNull(entity, nameof(entity)); if (entity.State.HasChanges()) { await _stateStorage.PersistAsync( id : entity.Id, state : (TAggregateState)entity.State, version : entity.Version, attributes : ExtractCustomAttributes((TAggregateState)entity.State), cancellationToken : cancellationToken); } }