Exemplo n.º 1
0
            public CommittedEventStream ForSource(Guid id, int sequenceOffset = 0)
            {
                int sequence = sequenceOffset + 1;

                var commitId = Guid.NewGuid();
                var comittedEvents = new List<CommittedEvent>();
                foreach (var evnt in _events)
                {
                    var committedEvent = new CommittedEvent(commitId, Guid.NewGuid(), id, sequence, DateTime.UtcNow,
                                                            evnt, new Version(1, 0));
                    sequence++;
                    comittedEvents.Add(committedEvent);
                }
                return new CommittedEventStream(id, comittedEvents);
            }
        public void When_constructing_it_with_events_where_one_has_an_incorrect_sequence_it_should_throw_argument_exception()
        {
            var sourceId = Guid.NewGuid();
            var eventObjects = new[] {new Object(), new Object(), new Object()};
            var committedEvents = Prepare.Events(eventObjects).ForSource(sourceId).ToList();

            var lastEvent = committedEvents.Last();
            const int incorrectSequence = int.MaxValue;
            var incorrectEvent = new CommittedEvent(lastEvent.CommitId, lastEvent.EventIdentifier, lastEvent.EventSourceId, incorrectSequence, lastEvent.EventTimeStamp, lastEvent.Payload, lastEvent.EventVersion);
            committedEvents[committedEvents.Count - 1] = incorrectEvent;

            Action act = () => new CommittedEventStream(sourceId, committedEvents);

            act.ShouldThrow<ArgumentException>();
        }
        public void Applying_an_event_to_an_agg_root_with_history_should_call_the_event_handler_only_once()
        {
            var theAggregate = new MyAggregateRoot();

            Guid commandId = Guid.NewGuid();

            var event1 = new CommittedEvent(commandId, Guid.NewGuid(), theAggregate.EventSourceId, 1, DateTime.UtcNow, new HandledEvent(), new Version(1, 0));
            var event2 = new CommittedEvent(commandId, Guid.NewGuid(), theAggregate.EventSourceId, 2, DateTime.UtcNow, new HandledEvent(), new Version(1, 0));
            var event3 = new CommittedEvent(commandId, Guid.NewGuid(), theAggregate.EventSourceId, 3, DateTime.UtcNow, new HandledEvent(), new Version(1, 0));
            var event4 = new CommittedEvent(commandId, Guid.NewGuid(), theAggregate.EventSourceId, 4, DateTime.UtcNow, new HandledEvent(), new Version(1, 0));
            var event5 = new CommittedEvent(commandId, Guid.NewGuid(), theAggregate.EventSourceId, 5, DateTime.UtcNow, new HandledEvent(), new Version(1, 0));

            IEnumerable<CommittedEvent> history = new[] { event1, event2, event3, event4, event5 };

            ((IEventSource)theAggregate).InitializeFromHistory(new CommittedEventStream(theAggregate.EventSourceId, history));

            var eventHandlerCountAfterInitialization = theAggregate.FooEventHandlerInvokeCount;

            theAggregate.MethodThatCausesAnEventThatHasAHandler();

            theAggregate.FooEventHandlerInvokeCount.Should().Be(eventHandlerCountAfterInitialization + 1);
        }