Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        /// <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);
            }
        }