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