public void ResolvePendingTransactions_Success() { /// Arrange var userAccount = new UserAccount { Balance = 100 }; var expectedUserAccount = new UserAccount { Balance = 200 }; var transactions = new Transaction[] { new Transaction { Type = TransactionType.Debit, Amount = 200 }, new Transaction { Type = TransactionType.Credit, Amount = 200 }, new Transaction { Type = TransactionType.Debit, Amount = 100 }, }; TransactionRepositoryMock.Setup(x => x.GetWhere(It.IsAny <Expression <Func <Transaction, bool> > >())) .Returns(transactions); UserAccountRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(userAccount); var pendingTransactionService = new PendingTransactionsService(TransactionRepositoryMock.Object, UserAccountRepositoryMock.Object); /// Act var result = pendingTransactionService.ResolvePendingTransactions(); /// Assert result.Should().BeTrue(); expectedUserAccount.Should().BeEquivalentTo(userAccount); UserAccountRepositoryMock.Verify(x => x.Update(It.IsAny <UserAccount>()), Times.Exactly(3)); TransactionRepositoryMock.Verify(x => x.Update(It.IsAny <Transaction>()), Times.Exactly(3)); transactions[0].Result.Should().Be(TransactionResult.Error); transactions[1].Result.Should().Be(TransactionResult.Done); transactions[2].Result.Should().Be(TransactionResult.Done); }
public void ResolvePendingTransactions_Fail() { /// Arrange TransactionRepositoryMock.Setup(x => x.GetWhere(It.IsAny <Expression <Func <Transaction, bool> > >())) .Returns(new Transaction[] { }); UserAccountRepositoryMock.Setup(x => x.GetById(It.IsAny <int>())).Returns(new UserAccount { }); var pendingTransactionService = new PendingTransactionsService(TransactionRepositoryMock.Object, UserAccountRepositoryMock.Object); /// Act var result = pendingTransactionService.ResolvePendingTransactions(); /// Assert result.Should().BeFalse(); UserAccountRepositoryMock.Verify(x => x.Update(It.IsAny <UserAccount>()), Times.Never); TransactionRepositoryMock.Verify(x => x.Update(It.IsAny <Transaction>()), Times.Never); }