示例#1
0
        protected void ApplyEventOnSaga(DomainEvent evt)
        {
            var id   = _listener.GetCorrelationId(evt);
            var saga = _repo.GetById <DeliverPizzaSaga2>(id);

            saga.Transition(evt);
            _repo.Save(saga, Guid.NewGuid(), null);
        }
示例#2
0
        public void Verify_that_saga_can_be_reloaded_and_have_no_uncommitted_events()
        {
            var orderId = new OrderId(1);
            var sagaId  = orderId;

            var eventStore = _factory.BuildEventStore(_connectionString);
            var repo       = new SagaEventStoreRepositoryEx(eventStore, new SagaFactory());

            var saga = repo.GetById <DeliverPizzaSaga>(sagaId);

            saga.Transition(new OrderPlaced(orderId));
            saga.Transition(new BillPrinted(orderId));
            saga.Transition(new PaymentReceived(orderId, Guid.NewGuid()));
            saga.Transition(new PizzaDelivered(orderId));

            repo.Save(saga, Guid.NewGuid(), null);

            var sagaReloaded = repo.GetById <DeliverPizzaSaga>(sagaId);

            Assert.That(sagaReloaded, Is.Not.Null);
            var uncommittedevents = ((ISagaEx)saga).GetUncommittedEvents().ToArray();

            Assert.AreEqual(0, uncommittedevents.Count());
        }
示例#3
0
        public void Verify_that_saga_has_correct_number_of_uncommitted_events()
        {
            var orderId = new OrderId(1);
            var sagaId  = orderId;

            var eventStore = _factory.BuildEventStore(_connectionString);
            var repo       = new SagaEventStoreRepositoryEx(eventStore, new SagaFactory());

            var saga = repo.GetById <DeliverPizzaSaga>(sagaId);

            saga.Transition(new OrderPlaced(orderId));
            saga.Transition(new BillPrinted(orderId));
            saga.Transition(new PaymentReceived(orderId, Guid.NewGuid()));
            saga.Transition(new PizzaDelivered(orderId));
            //check that uncommitted events are correctly transictioned.
            var events = ((ISagaEx)saga).GetUncommittedEvents().ToArray();

            repo.Save(saga, Guid.NewGuid(), null);

            Assert.AreEqual(4, events.Count());
        }