public void Transactions_should_be_charged() { var lines = File.ReadAllText("./transactions.txt"); var processor = TransactionProcessor.Default(); var actual = processor.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-01", "7-ELEVEN", 30.00m), new Fee("2018-09-04", "CIRCLE_K", 29.80m), new Fee("2018-09-07", "TELIA", 29.90m), new Fee("2018-09-09", "NETTO", 30.00m), new Fee("2018-09-13", "CIRCLE_K", 0.80m), new Fee("2018-09-16", "TELIA", 0.90m), new Fee("2018-09-19", "7-ELEVEN", 1.00m), new Fee("2018-09-22", "CIRCLE_K", 0.80m), new Fee("2018-09-25", "TELIA", 0.90m), new Fee("2018-09-28", "7-ELEVEN", 1.00m), new Fee("2018-09-30", "CIRCLE_K", 0.80m), new Fee("2018-10-01", "7-ELEVEN", 30.00m), new Fee("2018-10-04", "CIRCLE_K", 29.80m), new Fee("2018-10-07", "TELIA", 29.90m), new Fee("2018-10-10", "NETTO", 30.00m), new Fee("2018-10-13", "CIRCLE_K", 0.80m), new Fee("2018-10-16", "TELIA", 0.90m), new Fee("2018-10-19", "7-ELEVEN", 1.00m), new Fee("2018-10-22", "CIRCLE_K", 0.80m), new Fee("2018-10-25", "TELIA", 0.90m), new Fee("2018-10-28", "7-ELEVEN", 1.00m), new Fee("2018-10-30", "CIRCLE_K", 0.80m), }); }
public static void Main(string[] args = null) { var lines = File.ReadAllText("./transactions.txt"); var result = TransactionProcessor.Default().ProcessLines(lines); Console.WriteLine(string.Join("\r\n", result)); }
public void Invoice_fee_not_charged_for_0_fee() { var sut = TransactionProcessor.Default(); var lines = @" 2018-09-01 7-ELEVEN 0 2018-09-01 7-ELEVEN 100 2018-09-04 CIRCLE_K 100 2018-09-07 TELIA 100 2018-09-09 NETTO 100 2018-09-13 CIRCLE_K 100 2018-09-16 TELIA 100 2018-09-19 7-ELEVEN 100 2018-09-22 CIRCLE_K 100 2018-09-25 TELIA 100 2018-09-28 7-ELEVEN 100 2018-09-30 CIRCLE_K 100 2018-10-01 7-ELEVEN 100 2018-10-04 CIRCLE_K 100 2018-10-07 TELIA 100 2018-10-10 NETTO 100 2018-10-13 CIRCLE_K 100 2018-10-16 TELIA 100 2018-10-19 7-ELEVEN 100 2018-10-22 CIRCLE_K 100 2018-10-25 TELIA 100 2018-10-28 7-ELEVEN 100 2018-10-30 CIRCLE_K 100 "; var actual = sut.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-01", "7-ELEVEN", 0m), new Fee("2018-09-01", "7-ELEVEN", 30.00m), new Fee("2018-09-04", "CIRCLE_K", 29.80m), new Fee("2018-09-07", "TELIA", 29.90m), new Fee("2018-09-09", "NETTO", 30.00m), new Fee("2018-09-13", "CIRCLE_K", 0.80m), new Fee("2018-09-16", "TELIA", 0.90m), new Fee("2018-09-19", "7-ELEVEN", 1.00m), new Fee("2018-09-22", "CIRCLE_K", 0.80m), new Fee("2018-09-25", "TELIA", 0.90m), new Fee("2018-09-28", "7-ELEVEN", 1.00m), new Fee("2018-09-30", "CIRCLE_K", 0.80m), new Fee("2018-10-01", "7-ELEVEN", 30.00m), new Fee("2018-10-04", "CIRCLE_K", 29.80m), new Fee("2018-10-07", "TELIA", 29.90m), new Fee("2018-10-10", "NETTO", 30.00m), new Fee("2018-10-13", "CIRCLE_K", 0.80m), new Fee("2018-10-16", "TELIA", 0.90m), new Fee("2018-10-19", "7-ELEVEN", 1.00m), new Fee("2018-10-22", "CIRCLE_K", 0.80m), new Fee("2018-10-25", "TELIA", 0.90m), new Fee("2018-10-28", "7-ELEVEN", 1.00m), new Fee("2018-10-30", "CIRCLE_K", 0.80m), }); }
public void Invoice_fixed_fee_should_be_charged() { var sut = TransactionProcessor.Default(); var lines = @" 2018-09-02 7-ELEVEN 120 2018-09-04 NETTO 200 2018-10-22 7-ELEVEN 300 2018-10-29 7-ELEVEN 150 "; var actual = sut.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-02", "7-ELEVEN", 30.20m), new Fee("2018-09-04", "NETTO", 31.00m), new Fee("2018-10-22", "7-ELEVEN", 32.00m), new Fee("2018-10-29", "7-ELEVEN", 1.50m), }); }
public void CircleK_should_get_discount() { var sut = TransactionProcessor.Default(invoiceFixedFee: 0m); var lines = @" 2018-09-02 CIRCLE_K 120 2018-09-04 CIRCLE_K 200 2018-10-22 CIRCLE_K 300 2018-10-29 CIRCLE_K 150 "; var actual = sut.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-02", "CIRCLE_K", 0.96m), new Fee("2018-09-04", "CIRCLE_K", 1.60m), new Fee("2018-10-22", "CIRCLE_K", 2.40m), new Fee("2018-10-29", "CIRCLE_K", 1.20m), }); }
public void Telia_should_get_discount() { var sut = TransactionProcessor.Default(invoiceFixedFee: 0m); var lines = @" 2018-09-02 TELIA 120 2018-09-04 TELIA 200 2018-10-22 TELIA 300 2018-10-29 TELIA 150 "; var actual = sut.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-02", "TELIA", 1.08m), new Fee("2018-09-04", "TELIA", 1.80m), new Fee("2018-10-22", "TELIA", 2.70m), new Fee("2018-10-29", "TELIA", 1.35m), }); }
public void Transaction_fee_should_be_charged() { var sut = TransactionProcessor.Default(invoiceFixedFee: 0m, teliaDiscount: 0m, circleKDiscount: 0m); var lines = @" 2018-09-02 CIRCLE_K 120 2018-09-04 TELIA 200 2018-10-22 CIRCLE_K 300 2018-10-29 CIRCLE_K 150 "; var actual = sut.ProcessLines(lines); actual.Should().BeEquivalentTo(new[] { new Fee("2018-09-02", "CIRCLE_K", 1.20m), new Fee("2018-09-04", "TELIA", 2.00m), new Fee("2018-10-22", "CIRCLE_K", 3.00m), new Fee("2018-10-29", "CIRCLE_K", 1.50m), }); }