Esempio n. 1
0
        public void CanCreateFromEvents()
        {
            // arrange
            var factory     = AggregateFactory.For <Counter>();
            var aggregateId = "some id";
            var events      = new IAggregateEvent[] {
                new AggregateEvent <CounterIncremented>(
                    aggregateId, 1, DateTime.UtcNow, new CounterIncremented {
                    Increment = 1
                }),
                new AggregateEvent <CounterMultiplied>(
                    aggregateId, 2, DateTime.UtcNow, new CounterMultiplied {
                    Factor = 2
                }),
                new AggregateEvent <CounterIncremented>(
                    aggregateId, 3, DateTime.UtcNow, new CounterIncremented {
                    Increment = 5
                }),
            };

            // act
            var aggregate = factory.CreateFromEvents(aggregateId, events);

            // assert
            Assert.NotNull(aggregate);
            Assert.AreEqual(aggregateId, aggregate.Id);
            Assert.AreEqual(events.Last().SequenceId, aggregate.OriginalVersion);
            Assert.AreEqual(0, aggregate.Changes.Count());

            Assert.NotNull(aggregate.State);
            // no changes, so state version is the same
            Assert.AreEqual(events.Last().SequenceId, aggregate.State.Version);
        }
Esempio n. 2
0
        public void CanCreateFromEvents()
        {
            // arrange
            var factory = AggregateFactory.For<Counter>();
            var aggregateId = "some id";
            var events = new IAggregateEvent[] {
                new AggregateEvent<CounterIncremented>(
                    aggregateId, 1, DateTime.UtcNow, new CounterIncremented { Increment = 1 }),
                new AggregateEvent<CounterMultiplied>(
                    aggregateId, 2, DateTime.UtcNow, new CounterMultiplied{ Factor = 2}),
                new AggregateEvent<CounterIncremented>(
                    aggregateId, 3, DateTime.UtcNow, new CounterIncremented { Increment = 5 }),
            };

            // act
            var aggregate = factory.CreateFromEvents(aggregateId, events);

            // assert
            Assert.NotNull(aggregate);
            Assert.AreEqual(aggregateId, aggregate.Id);
            Assert.AreEqual(events.Last().SequenceId, aggregate.OriginalVersion);
            Assert.AreEqual(0, aggregate.Changes.Count());

            Assert.NotNull(aggregate.State);
            // no changes, so state version is the same
            Assert.AreEqual(events.Last().SequenceId, aggregate.State.Version);
        }