Esempio n. 1
0
        public void Event_handler_invoked_when_applying_domain_event_to_aggregate_root()
        {
            var entity = new SomeDomainEntityWithEvents();
            var domainEvent = new SomeDomainEvent();

            entity.Apply(domainEvent);

            entity.DomainEventHandlerInvoked.ShouldBeTrue("the eventhandler for the event was not invoked");
        }
Esempio n. 2
0
        public void Can_apply_domain_events_to_entity()
        {
            var entity = new SomeDomainEntityWithEvents();
            var domainEvent = new SomeDomainEvent();

            entity.Apply(domainEvent);

            var changes = entity.GetChanges();

            changes.ShouldNotBeNull();
            changes.Count().ShouldBeEqualTo(1, "Only one event should have been applied to aggregate");
            changes.First().ShouldBeSameAs(domainEvent, "The event applied to aggregate was not the one expected");
        }
Esempio n. 3
0
        public void Events_are_published_to_bus_on_commit()
        {
            var session = new Session(this, this);
            var aggregate = new SomeDomainEntityWithEvents();

            session.Track(aggregate);

            var domainEvent = new SomeDomainEvent();
            aggregate.Apply(domainEvent);

            session.CommitChanges();

            PublishedEvents.Count().ShouldBeEqualTo(1);
            PublishedEvents.Pop().ShouldBeSameAs(domainEvent);
        }
Esempio n. 4
0
        public void Can_commit_changes()
        {
            var session = new Session(this, this);
            var aggregate = new SomeDomainEntityWithEvents();

            session.Track(aggregate);

            var domainEvent = new SomeDomainEvent();
            aggregate.Apply(domainEvent);

            session.CommitChanges();

            _savedId.ShouldBeEqualTo(aggregate.Id);
            _savedEvents.Count().ShouldBeEqualTo(1);
            _savedEvents.First().ShouldBeSameAs(domainEvent);
        }
Esempio n. 5
0
        public void can_write_aggregate_to_xml()
        {
            var storage = new XmlEventStorage(this);

            var aggregate = new SomeDomainEntityWithEvents();
            aggregate.Apply(new SomeDomainEvent());

            storage.Save(aggregate.Id, aggregate.GetChanges());

            _writtenXml.ShouldNotBeNull();
            _writtenXml.Length.ShouldNotBeEqualTo(0);

            var ev = DomainEventSerializer.Deserialize(_writtenXml.ToString());

            ev.ShouldNotBeNull();
            ev.ShouldBeOfType<SomeDomainEvent>();
        }