static void Main(string[] args) { try { var merchantRepository = new InMemoryMerchantRepository(); merchantRepository.Add(new Merchant(new Name("7-ELEVEN"), new Percentage(0))); merchantRepository.Add(new Merchant(new Name("NETTO"), new Percentage(0))); merchantRepository.Add(new Merchant(new Name("TELIA"), new Percentage(10))); merchantRepository.Add(new Merchant(new Name("CIRCLE_K"), new Percentage(20))); var calculateFeeHandler = new CalculateFeeHandler(new Percentage(TransactionPercentageFee)); var calculateFeeWithDiscountHandler = new CalculateFeeWithDiscountHandler(calculateFeeHandler, merchantRepository); var calculateWithInvoiceFeeHandler = new CalculateFeeWithInvoiceFeeHandler(calculateFeeWithDiscountHandler, new Fee(InvoiceFixedFee)); var outputSettings = new OutputSettings(); var transactionFeeCalculator = new FeeCalculationApp(calculateWithInvoiceFeeHandler, OutputSettings); transactionFeeCalculator.CalculateTransactionFees(InputFilePath); } catch (Exception e) { Console.WriteLine(e); } }
public MOBILEPAY_5() { var calculateFeeHandler = new CalculateFeeHandler(new Percentage(1)); var calculateWithDiscountHandler = new CalculateFeeWithDiscountHandler(calculateFeeHandler, MerchantRepository); CommandHandler = new CalculateFeeWithInvoiceFeeHandler(calculateWithDiscountHandler, new Fee(29)); }
public void Handle_NullTransaction_ThrowsException() { //arrange var handler = new CalculateFeeHandler(new Percentage(10)); //act & assert Assert.Throws <DomainException>(() => handler.Handle(null)); }
public void Handle_CalculatesFeeCorrectly(double amount, double percentage, double expectedFee) { //arrange var handler = new CalculateFeeHandler(new Percentage(percentage)); var transaction = new Transaction(new Date(DateTime.Now), new Name("STEAM"), new Amount(amount)); //act var fee = handler.Handle(new CalculateFee(Guid.NewGuid(), transaction)); //assert Assert.Equal(expectedFee, fee.Value); }