public async Task EditAsync_ShouldEditACard() { using (var db = new ATMContext(TestOptions.TestDbContextOptions <ATMContext>())) { // Arrange var initCards = ACTION_RESULTS; await db.AddRangeAsync(initCards); await db.SaveChangesAsync(); IRepository <UserActionResult> repository = new DBUserActionResultRepository(db); var expectedCards = await repository.GetAllAsync(); var cardToEdit = expectedCards.First(); expectedCards.Remove(cardToEdit); cardToEdit.WithdrawalAmount += 1.00M; expectedCards.Add(cardToEdit); // Act await repository.EditAsync(cardToEdit); var result = await repository.GetAllAsync(); // Assert var actualCards = Assert.IsAssignableFrom <List <UserActionResult> >(result); Assert.Equal( expectedCards.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount)), actualCards.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount))); } }
public async Task AddAsync_ShouldAddANewAction() { using (var db = new ATMContext(TestOptions.TestDbContextOptions <ATMContext>())) { // Arrange var expectedDbAction = ACTION_NOT_IN_SEEDING_ACTIONS; var initActions = ACTION_RESULTS; if (initActions.Exists(a => a.Id == expectedDbAction.Id)) { throw new InvalidOperationException($"Seeding actions already contain the action that is not supposed to be there: {expectedDbAction}"); } await db.AddRangeAsync(initActions); await db.SaveChangesAsync(); IRepository <UserActionResult> repository = new DBUserActionResultRepository(db); var expectedActions = await repository.GetAllAsync(); expectedActions.Add(expectedDbAction); // Act await repository.AddAsync(expectedDbAction); var result = await repository.GetAllAsync(); // Assert var actualActions = Assert.IsAssignableFrom <List <UserActionResult> >(result); Assert.Equal( expectedActions.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount)), actualActions.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount))); } }
public async Task AddAsync_ShouldNotAddAAction() { using (var db = new ATMContext(TestOptions.TestDbContextOptions <ATMContext>())) { // Arrange var expectedAction = ACTION_RESULTS.First(); await db.AddRangeAsync(ACTION_RESULTS); await db.SaveChangesAsync(); IRepository <UserActionResult> repository = new DBUserActionResultRepository(db); var expectedActions = await repository.GetAllAsync(); // Act Func <Task> action = async() => await repository.AddAsync(expectedAction); // Assert await Assert.ThrowsAsync <ArgumentException>(action); } }
public async Task GetAllAsync_ShouldReturnSeedingActions() { using (var db = new ATMContext(TestOptions.TestDbContextOptions <ATMContext>())) { // Arrange var expectedResults = ACTION_RESULTS; await db.AddRangeAsync(expectedResults); await db.SaveChangesAsync(); IRepository <UserActionResult> repository = new DBUserActionResultRepository(db); // Act var result = await repository.GetAllAsync(); // Assert var actualMessages = Assert.IsAssignableFrom <List <UserActionResult> >(result); Assert.Equal( expectedResults.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount)), actualMessages.OrderBy(x => x.Id).Select(x => (id: x.Id, cid: x.CreditCardId, time: x.TimeStamp, operationCode: x.OperationCode, withdrawal: x.WithdrawalAmount))); } }