public async Task Given_persisted_snapshot_Aggregate_should_execute_command() { var aggregate = new Balloon(Guid.NewGuid().ToString(), "haha"); aggregate.WriteNewTitle(10); aggregate.ClearUncommitedEvents(); var repo = new AggregateSnapshotRepository(AutoTestNodeDbConfiguration.Default.JournalConnectionString, new BalloonAggregateFactory(), new BalloonAggregateFactory()); await repo.Add(aggregate); var cmd = new IncreaseTitleCommand(1, aggregate.Id); var res = await Node.Prepare(cmd) .Expect <BalloonTitleChanged>() .Execute(); var message = res.Received; //Values_should_be_equal() Assert.Equal("11", message.Value); //Ids_should_be_equal() Assert.Equal(aggregate.Id, message.SourceId); }
protected override IAggregate BuildFromSnapshot(Type type, string id, IMemento memento) { var snapshot = memento as BalloonSnapshot; if (snapshot == null) { throw new InvalidOperationException("Sample aggregate can be restored only from memento with type " + typeof(BalloonSnapshot).Name); } var aggregate = new Balloon(snapshot.Id, snapshot.Value); aggregate.ClearUncommitedEvents(); ((IMemento)aggregate).Version = snapshot.Version; return(aggregate); }
public void Test() { _aggregate = new Balloon(Guid.NewGuid().ToString(), "test"); _aggregate.WriteNewTitle(10); _aggregate.ClearUncommitedEvents(); var jsonSerializerSettings = DomainSerializer.GetDefaultSettings(); jsonSerializerSettings.TraceWriter = new XUnitTraceWriter(_testOutputHelper); var jsonString = JsonConvert.SerializeObject(_aggregate, jsonSerializerSettings); _restoredAggregate = JsonConvert.DeserializeObject <Balloon>(jsonString, jsonSerializerSettings); _restoredAggregate.ClearUncommitedEvents(); // Values_should_be_equal() Assert.Equal(_aggregate.Title, _restoredAggregate.Title); //Ids_should_be_equal() Assert.Equal(_aggregate.Id, _restoredAggregate.Id); }