public void Ensure_order_can_only_be_partially_refunded_when_paymentstatus_is_paid_or_partiallyRefunded_and_paymentModule_supports_partialRefund() { _paymentService.Setup(ps => ps.SupportPartiallyRefund("paymentMethodSystemName_that_supports_partialrefund")).Returns(true); _paymentService.Setup(ps => ps.SupportPartiallyRefund("paymentMethodSystemName_that_doesn't_support_partialrefund")).Returns(false); var order = new Order { OrderTotal = 100, PaymentMethodSystemName = "paymentMethodSystemName_that_supports_partialrefund" }; foreach (OrderStatus os in Enum.GetValues(typeof(OrderStatus))) { foreach (PaymentStatus ps in Enum.GetValues(typeof(PaymentStatus))) { foreach (ShippingStatus ss in Enum.GetValues(typeof(ShippingStatus))) { order.OrderStatus = os; order.PaymentStatus = ps; order.ShippingStatus = ss; if (ps == PaymentStatus.Paid || order.PaymentStatus == PaymentStatus.PartiallyRefunded) { _orderProcessingService.CanPartiallyRefund(order, 10).ShouldBeTrue(); } else { _orderProcessingService.CanPartiallyRefund(order, 10).ShouldBeFalse(); } } } } order.PaymentMethodSystemName = "paymentMethodSystemName_that_doesn't_support_partialrefund"; foreach (OrderStatus os in Enum.GetValues(typeof(OrderStatus))) { foreach (PaymentStatus ps in Enum.GetValues(typeof(PaymentStatus))) { foreach (ShippingStatus ss in Enum.GetValues(typeof(ShippingStatus))) { order.OrderStatus = os; order.PaymentStatus = ps; order.ShippingStatus = ss; _orderProcessingService.CanPartiallyRefund(order, 10).ShouldBeFalse(); } } } }
public void EnsureOrderCanOnlyBePartiallyRefundedWhenPaymentStatusIsPaidOrPartiallyRefundedAndPaymentModuleSupportsPartialRefund() { var order = new Order { OrderTotal = 100, PaymentMethodSystemName = "Payments.TestMethod" }; TestPaymentMethod.TestSupportPartiallyRefund = true; foreach (OrderStatus os in Enum.GetValues(typeof(OrderStatus))) { foreach (PaymentStatus ps in Enum.GetValues(typeof(PaymentStatus))) { foreach (ShippingStatus ss in Enum.GetValues(typeof(ShippingStatus))) { order.OrderStatus = os; order.PaymentStatus = ps; order.ShippingStatus = ss; if (ps == PaymentStatus.Paid || order.PaymentStatus == PaymentStatus.PartiallyRefunded) { _orderProcessingService.CanPartiallyRefund(order, 10).Should().BeTrue(); } else { _orderProcessingService.CanPartiallyRefund(order, 10).Should().BeFalse(); } } } } TestPaymentMethod.TestSupportPartiallyRefund = false; foreach (OrderStatus os in Enum.GetValues(typeof(OrderStatus))) { foreach (PaymentStatus ps in Enum.GetValues(typeof(PaymentStatus))) { foreach (ShippingStatus ss in Enum.GetValues(typeof(ShippingStatus))) { order.OrderStatus = os; order.PaymentStatus = ps; order.ShippingStatus = ss; _orderProcessingService.CanPartiallyRefund(order, 10).Should().BeFalse(); } } } }