public void source_is_not_persisted()
        {
            var command1 = MessageBuilder.New(() => new TestCommands.Command1());
            var id       = Guid.NewGuid();
            var agg      = new CorrelatedAggregate(id, command1);

            agg.RaiseCorrelatedEvent();
            agg.RaiseCorrelatedEvent();
            _stdRepo.Save(agg);

            var command2  = MessageBuilder.New(() => new TestCommands.Command2());
            var recovered = _stdRepo.GetById <CorrelatedAggregate>(id);

            Assert.NotNull(recovered);
            Assert.Equal(2, recovered.Version);//zero based, includes created

            //no source has been set
            Assert.Throws <InvalidOperationException>(() => recovered.RaiseCorrelatedEvent());
            ((ICorrelatedEventSource)recovered).Source = command2;
            recovered.RaiseCorrelatedEvent();
        }
示例#2
0
        public void can_raise_correlated_events()
        {
            var agg = new CorrelatedAggregate();

            agg.ApplyNewSource(_command);
            agg.RaiseCorrelatedEvent();
            agg.RaiseCorrelatedEventByIds();
            var events = agg.TakeEvents();

            Assert.Equal(2, events.Length);
            var @event = events[0] as CorrelatedAggregate.CorrelatedEvent;

            Assert.NotNull(@event);
            Assert.Equal(_command.CorrelationId, @event.CorrelationId);
            Assert.Equal(_command.MsgId, @event.SourceId);

            @event = events[1] as CorrelatedAggregate.CorrelatedEvent;
            Assert.NotNull(@event);
            Assert.Equal(_command.CorrelationId, @event.CorrelationId);
            Assert.Equal(_command.MsgId, @event.SourceId);
        }
示例#3
0
        public void after_taking_events_new_source_may_be_applied()
        {
            var agg = new CorrelatedAggregate();

            agg.ApplyNewSource(_command);
            agg.RaiseCorrelatedEvent();
            var evt = agg.TakeEvents()[0] as CorrelatedAggregate.CorrelatedEvent;

            Assert.NotNull(evt);
            Assert.Equal(_command.CorrelationId, evt.CorrelationId);
            Assert.Equal(_command.MsgId, evt.SourceId);
            Assert.Throws <NullReferenceException>(() => agg.RaiseCorrelatedEvent());
            Assert.Empty(agg.TakeEvents());
            var otherRoot = CorrelatedMessage.NewRoot();

            agg.ApplyNewSource(otherRoot);
            agg.RaiseCorrelatedEvent();
            evt = agg.TakeEvents()[0] as CorrelatedAggregate.CorrelatedEvent;
            Assert.NotNull(evt);
            Assert.Equal(otherRoot.CorrelationId, evt.CorrelationId);
            Assert.Equal(otherRoot.MsgId, evt.SourceId);
        }