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); }