示例#1
0
        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);
        }
示例#3
0
        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);
        }