public async Task Return_OK_Status_Code_When_Successful() { var databaseName = nameof(Return_OK_Status_Code_When_Successful); var options = CashRegisterService_Utilities.GetOptions(databaseName); // Arrange var context = new CashRegisterContext(options); var banknote = new Banknotes() { Fifty = 1, One = 1, }; context.Banknotes.Add(banknote); context.SaveChanges(); var sut = new CashRegisterService(context); var withdrawAmount = 51; var response = await sut.HandleCashWithdraw(withdrawAmount); Assert.IsTrue(response.StatusCode == 200); }
public async Task Update_Database_With_Withdrawn_Banknotes() { var databaseName = nameof(Update_Database_With_Withdrawn_Banknotes); var options = CashRegisterService_Utilities.GetOptions(databaseName); // Arrange var context = new CashRegisterContext(options); var banknote = new Banknotes() { Fifty = 1, One = 1, }; context.Banknotes.Add(banknote); context.SaveChanges(); // Act var sut = new CashRegisterService(context); var withdrawAmount = 51; var response = await sut.HandleCashWithdraw(withdrawAmount); // Assert using (var actAndAssertContext = new CashRegisterContext(options)) { Assert.IsTrue(actAndAssertContext.Banknotes.FirstOrDefault().Fifty == 0); Assert.IsTrue(actAndAssertContext.Banknotes.FirstOrDefault().One == 0); }; }
public async Task Return_Model_With_Withdrawn_Banknotes() { var databaseName = nameof(Return_Model_With_Withdrawn_Banknotes); var options = CashRegisterService_Utilities.GetOptions(databaseName); // Arrange var context = new CashRegisterContext(options); var banknote = new Banknotes() { Fifty = 1, One = 1, }; context.Banknotes.Add(banknote); context.SaveChanges(); var sut = new CashRegisterService(context); var withdrawAmount = 51; var response = await sut.HandleCashWithdraw(withdrawAmount); Assert.IsNotNull(response.Model); }
public async Task Return_Failure_Message_When_Banknotes_Cannot_Fulfil_Withdraw() { var databaseName = nameof(Return_Failure_Message_When_Banknotes_Cannot_Fulfil_Withdraw); var options = CashRegisterService_Utilities.GetOptions(databaseName); // Arrange var context = new CashRegisterContext(options); var banknote = new Banknotes() { Fifty = 1, One = 1, }; context.Banknotes.Add(banknote); context.SaveChanges(); var sut = new CashRegisterService(context); var withdrawAmount = 41; var response = await sut.HandleCashWithdraw(withdrawAmount); Assert.IsTrue(response.Message == Messages.BanknotesCannotFulfilPayment); }
public void CanTrackBanknotes() { foreach (var b in Banknotes) { var remains = Banknotes.Where(bb => bb != b).ToList(); Refill(1).Withdraw(b).AvailableBanknotes().OrderBy(e => e).Should().Equal(remains.OrderBy(e => e)); } }
public void CanRefill(int initQty) { if (Acceptable(initQty)) { AtmClient atm = Refill(initQty); // Amount should be valid after refill atm.AvailableAmount().Should().Be(Total(initQty)); // Banknotes should match what has been refilled atm.AvailableBanknotes().OrderBy(b => b).Should().Equal(Banknotes.OrderBy(b => b)); } }
public static CashRegisterContext FillContextWithUserData(DbContextOptions <CashRegisterContext> options) { var context = new CashRegisterContext(options); var banknote = new Banknotes() { Fifty = 1, Twenty = 1, Ten = 1, Five = 1, Two = 1, One = 1 }; context.Banknotes.Add(banknote); context.SaveChanges(); return(context); }
private static int Total(int qty) { return(Banknotes.Select(b => b * qty).Sum()); }