public async Task command_handler_should_pass_if_modified_since_check_is_ok() { SampleAggregate aggregate = await CreateAndSaveAggregate().ConfigureAwait(false); var cmd = new TouchSampleAggregate(new SampleAggregateId(1)); var startVersion = aggregate.Version; cmd.SetContextData(MessagesConstants.IfVersionEqualsTo, startVersion.ToString()); await _sut.HandleAsync(cmd).ConfigureAwait(false); Assert.That(_sut.Aggregate.Version, Is.EqualTo(startVersion + 1)); }
public async Task command_handler_should_throw_if_modified_since_check_fails() { SampleAggregate aggregate = await CreateAndSaveAggregate().ConfigureAwait(false); var cmd = new TouchSampleAggregate(new SampleAggregateId(1)); cmd.SetContextData(MessagesConstants.IfVersionEqualsTo, aggregate.Version.ToString()); //now simulate another change of the entity aggregate.Touch(); await _repositoryEx.SaveAsync(aggregate, Guid.NewGuid().ToString(), null).ConfigureAwait(false); Assert.ThrowsAsync <AggregateModifiedException>(async() => await _sut.HandleAsync(cmd).ConfigureAwait(false)); }
public void repository_command_handler_should_set_context() { var cmd = new TouchSampleAggregate(new SampleAggregateId(1)); cmd.SetContextData("key", "value"); IRepositoryExFactory factory = NSubstitute.Substitute.For <IRepositoryExFactory>(); factory.Create().Returns(_sut); var handler = new TouchSampleAggregateHandler { Repository = _sut, AggregateFactory = _aggregateFactory, AggregateCachedRepositoryFactory = new AggregateCachedRepositoryFactory(factory) }; handler.Handle(cmd); var context = handler.Aggregate.ExposeContext; Assert.NotNull(context); Assert.AreEqual("TouchSampleAggregate", context["command.name"]); Assert.AreEqual("value", context["key"]); }