public void CalculateMerchantFee_ForFreeTransaction_ShouldNotIncludeInvoiceFee(decimal fee) { // Arrange var transaction = new Transaction { Fee = fee }; var invoiceFeeService = new TestInvoiceFeeService(); var sut = new FreeInvoiceFeeRuleDecorator(invoiceFeeService); var expected = 0; // Act sut.CalculateInvoiceFee(transaction); var actual = transaction.Fee; // Assert actual.Should().Be(expected); }
public void CalculateFees() { var transactionRepository = new TxtTransactionRepository(); BaseTransactionFeeService transactionFeeService = new TransactionPercentageFeeService(); transactionFeeService = new TeliaPercentageDiscountDecorator(transactionFeeService); transactionFeeService = new CircleKPercentageDiscountDecorator(transactionFeeService); BaseInvoiceFeeService invoiceFeeService = new InvoiceFixedFeeService(); invoiceFeeService = new FirstMonthlyInvoiceFeeRuleDecorator(invoiceFeeService); invoiceFeeService = new FreeInvoiceFeeRuleDecorator(invoiceFeeService); var merchantFeeCalculatorService = new MerchantFeeCalculatorService(transactionRepository, transactionFeeService, invoiceFeeService); merchantFeeCalculatorService.CalculateFees(); }