コード例 #1
0
        public void events_raised_whilst_handling_commands_should_be_emitted()
        {
            var eventEmitter = Substitute.For<EventEmitter>();
            var eventStore = Substitute.For<EventStore>();
            var key = "test";

            using (var ts = new TransactionScope())
            {
                var domain = new TestableDomain(eventEmitter, null, eventStore);

                var expected = new RegisterDog(key, null, null);

                domain.Apply(expected);

                ts.Complete();
            }

            eventEmitter.Received().Emit(Arg.Is<RaisedEvent>(_ => ((DogRegistered) _.Event).Earbrand == key));
        }
コード例 #2
0
        public void events_raised_whilst_handling_commands_should_be_recorded()
        {
            var eventStore = Substitute.For<EventStore>();

            using ( new TransactionScope())
            {
                var domain = new TestableDomain(null, null, eventStore);

                var key = "test";

                domain.Apply(new RegisterDog(key, null, null));

                var aggregateInfo = domain.AggregateTracker[typeof (Dog), key];
                aggregateInfo.Lifestate.ShouldEqual(AggregateLifestate.Untracked);

                var recorded = domain.TransactionTracker[Transaction.Current].RecordedEvents;
                recorded.Count().ShouldEqual(1);
                recorded.First().Event.ShouldBeType<DogRegistered>();
            }
        }