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 Handle(CreditCardPaymentInitiated @event) { Action handling = () => { using (var context = _contextFactory.Invoke()) { var existingReport = context.Find <OrderReportDetail>(@event.OrderId); var orderReport = existingReport ?? new OrderReportDetail { Id = @event.OrderId }; var creditCard = context.Query <CreditCardDetails>().FirstOrDefault(x => x.Token == @event.CardToken); orderReport.Payment.PaymentId = @event.SourceId; orderReport.Payment.PreAuthorizedAmount = @event.Amount; orderReport.Payment.FirstPreAuthTransactionId = @event.TransactionId.ToSafeString().IsNullOrEmpty() ? "" : "Auth: " + @event.TransactionId; orderReport.Payment.TransactionId = @event.TransactionId.ToSafeString().IsNullOrEmpty() ? "" : "Auth: " + @event.TransactionId; orderReport.Payment.CardToken = @event.CardToken; orderReport.Payment.Last4Digits = creditCard != null ? creditCard.Last4Digits : ""; orderReport.Payment.Type = @event.Provider == PaymentProvider.PayPal ? PaymentType.PayPal : PaymentType.CreditCard; orderReport.Payment.Provider = @event.Provider; context.Save(orderReport); } }; WrapWithSqlPrimaryKeyHandling(handling); }
private void OnCreditCardPaymentInitiated(CreditCardPaymentInitiated obj) { _orderId = obj.OrderId; _transactionId = obj.TransactionId; }