public void when_amount_spent_attained_then_promotion_unlocked()
        {
            var accountId = Guid.NewGuid();
            var orderId1  = Guid.NewGuid();
            var orderId2  = Guid.NewGuid();

            var newOrderStatus = new OrderStatusChanged
            {
                IsCompleted = true,
                Status      = new OrderStatusDetail {
                    AccountId = accountId, Status = OrderStatus.Completed
                }
            };

            var newPaymentInit = new CreditCardPaymentInitiated
            {
                Meter = (decimal)15.31
            };

            var newPayment = new CreditCardPaymentCaptured_V2
            {
                FeeType           = FeeTypes.None,
                Meter             = (decimal)15.31,
                AuthorizationCode = Guid.NewGuid().ToString(),
                AccountId         = accountId
            };

            _orderCreatedCommand.AccountId = accountId;

            _orderCreatedCommand.SourceId = orderId1;
            newOrderStatus.SourceId       = orderId1;
            newPaymentInit.SourceId       = orderId1;
            newPaymentInit.OrderId        = orderId1;
            newPayment.SourceId           = orderId1;
            newPayment.OrderId            = orderId1;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            CreditCardGenerator.Handle(newPaymentInit);
            CreditCardGenerator.Handle(newPayment);
            TriggerSut.Handle(newPayment);

            _orderCreatedCommand.SourceId = orderId2;
            newOrderStatus.SourceId       = orderId2;
            newPaymentInit.SourceId       = orderId2;
            newPaymentInit.OrderId        = orderId2;
            newPayment.SourceId           = orderId2;
            newPayment.OrderId            = orderId2;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            CreditCardGenerator.Handle(newPaymentInit);
            CreditCardGenerator.Handle(newPayment);
            TriggerSut.Handle(newPayment);

            var commands = Commands.OfType <AddUserToPromotionWhiteList>().Where(c => c.AccountIds.Contains(accountId)).ToArray();

            Assert.AreEqual(1, commands.Count());
            Assert.AreEqual(30.62, commands[0].LastTriggeredAmount);
        }
        public void when_ride_count_attained_then_promotion_unlocked()
        {
            var accountId = Guid.NewGuid();
            var orderId1  = Guid.NewGuid();
            var orderId2  = Guid.NewGuid();

            var newOrderStatus = new OrderStatusChanged
            {
                IsCompleted = true,
                Status      = new OrderStatusDetail {
                    AccountId = accountId, Status = OrderStatus.Completed
                }
            };

            _orderCreatedCommand.AccountId = accountId;
            _orderCreatedCommand.SourceId  = orderId1;
            newOrderStatus.SourceId        = orderId1;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            TriggerSut.Handle(newOrderStatus);

            _orderCreatedCommand.SourceId = orderId2;
            newOrderStatus.SourceId       = orderId2;

            OrderGenerator.Handle(_orderCreatedCommand);
            OrderGenerator.Handle(newOrderStatus);
            TriggerSut.Handle(newOrderStatus);

            var commands = Commands.OfType <AddUserToPromotionWhiteList>().Where(c => c.AccountIds.Contains(accountId)).ToArray();

            Assert.AreEqual(1, commands.Count());
            Assert.AreEqual(2, commands[0].LastTriggeredAmount);
        }
예제 #3
0
        public void Setup()
        {
            _orderId = Guid.NewGuid();

            var bus = new Mock <ICommandBus>();

            bus.Setup(x => x.Send(It.IsAny <Envelope <ICommand> >()))
            .Callback <Envelope <ICommand> >(x => Commands.Add(x.Body));
            bus.Setup(x => x.Send(It.IsAny <IEnumerable <Envelope <ICommand> > >()))
            .Callback <IEnumerable <Envelope <ICommand> > >(x => Commands.AddRange(x.Select(e => e.Body)));

            Commands = new List <ICommand>();

            Sut = new OrderDispatchCompanyManager(bus.Object,
                                                  () => new BookingDbContext(DbName),
                                                  new IBSServiceProvider(new TestServerSettings(), new Logger(), new TaxiHailNetworkServiceClient(new TestServerSettings())),
                                                  new TaxiHailNetworkServiceClient(new TestServerSettings()),
                                                  new ConfigurationDao(() => new ConfigurationDbContext(DbName)),
                                                  new Logger(),
                                                  new TestServerSettings());

            var ordetailsGenerator = new OrderGenerator(() => new BookingDbContext(DbName), new Logger(), new TestServerSettings());

            ordetailsGenerator.Handle(new OrderCreated
            {
                SourceId      = _orderId,
                AccountId     = Guid.NewGuid(),
                UserLatitude  = 45.463944,
                UserLongitude = -73.643234,
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.463944,
                    Longitude = -73.643234
                },
                PickupDate     = DateTime.Now,
                DropOffAddress = new Address
                {
                    Street    = "Velvet auberge st gabriel",
                    Latitude  = 45.411296,
                    Longitude = -73.613314,
                },
                CreatedDate = DateTime.Now,
            });
        }
예제 #4
0
        public void Setup()
        {
            _paymentId = Guid.NewGuid();
            var orderId = Guid.NewGuid();

            Sut.Handle(new CreditCardPaymentInitiated
            {
                SourceId      = _paymentId,
                OrderId       = orderId,
                Amount        = 12.34m,
                TransactionId = "the transaction",
            });
            var ordetailsGenerator = new OrderGenerator(() => new BookingDbContext(DbName), new Logger(), new TestServerSettings());

            ordetailsGenerator.Handle(new OrderCreated
            {
                SourceId      = orderId,
                AccountId     = Guid.NewGuid(),
                PickupAddress = new Address
                {
                    Apartment = "3939",
                    Street    = "1234 rue Saint-Hubert",
                    RingCode  = "3131",
                    Latitude  = 45.515065,
                    Longitude = -73.558064
                },
                PickupDate     = DateTime.Now,
                DropOffAddress = new Address
                {
                    Street    = "Velvet auberge st gabriel",
                    Latitude  = 45.50643,
                    Longitude = -73.554052,
                },
                CreatedDate = DateTime.Now,
            });
        }