예제 #1
0
        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);
        }
예제 #2
0
        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))));
        }