public async Task WhenRequest_IfTransactionIsNullDontAddToStore() { // Arrange var lineCount = 2; var lines = this.CreateRandomStringArray(lineCount); var file = this.CreateStreamFromStrings(lines); var accountId = Guid.NewGuid(); var request = new ImportTransactionsRequest { File = file, AccountId = accountId, FileName = _fixture.Create <string>() }; var expectedTransaction = new TransactionStaging(); _transactionConverter.Setup(t => t.Convert( It.IsAny <Guid>(), It.IsAny <Guid>(), It.Is <string>(l => l == lines[0]) )) .Returns(expectedTransaction); var expectedTransactions = new List <TransactionStaging> { expectedTransaction, }; _transactionConverter.Setup(t => t.Convert( It.IsAny <Guid>(), It.IsAny <Guid>(), It.Is <string>(l => l == lines[1]) )) .Returns(default(TransactionStaging)); // null _transactionStagingStore.Setup(t => t.AddAsync(It.IsAny <IEnumerable <TransactionStaging> >())) .ReturnsAsync(_fixture.Create <int>()); // Act var handler = this.CreateHandler(); var result = await handler.Handle(request, new CancellationToken()); // Assert _transactionStagingStore.Verify(t => t.AddAsync(expectedTransactions), Times.Once); }
public async Task WhenRequest_TransactionCoverterCalledForEachLineAndAddToStore() { //Arrange var lineCount = 6; var lines = this.CreateRandomStringArray(lineCount); var file = this.CreateStreamFromStrings(lines); var accountId = Guid.NewGuid(); var request = new ImportTransactionsRequest { File = file, AccountId = accountId, FileName = _fixture.Create <string>() }; var transaction = _fixture.Create <TransactionStaging>(); _transactionConverter.Setup(t => t.Convert( It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <string>() )) .Returns(transaction); // Act ImportTransactionsRequest.Handler handler = this.CreateHandler(); var result = await handler.Handle(request, new CancellationToken()); // Assert var expectedTransactions = new List <TransactionStaging>(); foreach (var line in lines) { _transactionConverter.Verify(t => t.Convert(_userId, accountId, line), Times.Once); expectedTransactions.Add(transaction); } _transactionStagingStore.Verify(t => t.AddAsync(It.Is <List <TransactionStaging> >(x => x.ShouldBeEquivalentTrue(expectedTransactions)))); }