Exemplo n.º 1
0
        public given_saga_awaiting_payment()
        {
            this.sut          = new RegistrationProcessSaga();
            this.orderId      = Guid.NewGuid();
            this.conferenceId = Guid.NewGuid();

            this.sut.Handle(new OrderPlaced
            {
                OrderId      = this.orderId,
                ConferenceId = this.conferenceId,
                Items        = new[] { new OrderPlaced.OrderItem {
                                           SeatTypeId = Guid.NewGuid(), Quantity = 2
                                       } }
            });

            var makeReservationCommand = sut.Commands.Select(e => e.Body).OfType <MakeSeatReservation>().Single();

            this.reservationId = makeReservationCommand.ReservationId;

            this.sut.Handle(new ReservationAccepted
            {
                ReservationId = makeReservationCommand.ReservationId,
                ConferenceId  = makeReservationCommand.ConferenceId,
            });
        }
Exemplo n.º 2
0
        public given_saga_awaiting_for_reservation_confirmation()
        {
            this.sut          = new RegistrationProcessSaga();
            this.orderId      = Guid.NewGuid();
            this.conferenceId = Guid.NewGuid();

            this.sut.Handle(new OrderPlaced
            {
                OrderId      = this.orderId,
                ConferenceId = this.conferenceId,
                Items        = new[] { new OrderPlaced.OrderItem {
                                           SeatTypeId = Guid.NewGuid(), Quantity = 2
                                       } }
            });
        }
        public void Handle(OrderPlaced @event)
        {
            var saga = new RegistrationProcessSaga();

            saga.Handle(@event);

            var repo = this.repositoryFactory.Invoke();

            using (repo as IDisposable)
            {
                lock (lockObject)
                {
                    repo.Save(saga);
                }
            }
        }
Exemplo n.º 4
0
        public void when_reservation_rejected_then_routes_and_saves()
        {
            var saga = new RegistrationProcessSaga
            {
                State         = RegistrationProcessSaga.SagaState.AwaitingReservationConfirmation,
                ReservationId = Guid.NewGuid(),
            };
            var repo = new Mock <ISagaRepository>();

            repo.Setup(x => x.Query <RegistrationProcessSaga>()).Returns(new[] { saga }.AsQueryable());
            var disposable = repo.As <IDisposable>();
            var router     = new RegistrationProcessSagaRouter(() => repo.Object);

            router.Handle(new Events.ReservationRejected {
                ReservationId = saga.ReservationId
            });

            repo.Verify(x => x.Save(It.IsAny <RegistrationProcessSaga>()));
            disposable.Verify(x => x.Dispose());
        }
Exemplo n.º 5
0
 public given_uninitialized_saga()
 {
     this.sut = new RegistrationProcessSaga();
 }