Exemple #1
0
 public AccountController(ILogger <AccountController> logger, AccountCore core, IHttpContextAccessor http)
 {
     _logger = logger;
     _core   = core;
     _http   = http;
 }
Exemple #2
0
        public async Task GetUserInfo()
        {
            var accountDataAccessMoq = new Mock <IAccountDataAccess>();
            var customerClientMoq    = new Mock <ICustomerClient>();
            var transactionClientMoq = new Mock <ITransactionClient>();

            var accountCore = new AccountCore(accountDataAccessMoq.Object, customerClientMoq.Object, transactionClientMoq.Object);

            var expectedCustomer = new CustomerResponse
            {
                Name    = "John",
                Surname = "Doe"
            };

            var customerId       = Guid.NewGuid();
            var expectedAccount1 = new Account
            {
                Id         = Guid.NewGuid(),
                CustomerId = customerId,
                Name       = "Account01"
            };
            var expectedAccount2 = new Account
            {
                Id         = Guid.NewGuid(),
                CustomerId = customerId,
                Name       = "Account02"
            };
            var expectedAccount3 = new Account
            {
                Id         = Guid.NewGuid(),
                CustomerId = customerId,
                Name       = "Account03"
            };

            var accountsList = new List <Account> {
                expectedAccount1, expectedAccount2, expectedAccount3
            };

            customerClientMoq.Setup(x => x.GetById(customerId.ToString())).Returns(async() =>
                                                                                   await Task.FromResult(expectedCustomer)
                                                                                   );

            accountDataAccessMoq.Setup(x => x.GetByCustomerId(customerId)).Returns(async() =>
                                                                                   await Task.FromResult(accountsList));

            var expectedTransactions1 = new List <TransactionResponse>
            {
                new TransactionResponse
                {
                    AccountId = expectedAccount1.Id,
                    Amount    = 50,
                    Timestamp = DateTime.Now
                }, new TransactionResponse
                {
                    AccountId = expectedAccount1.Id,
                    Amount    = 500,
                    Timestamp = DateTime.Now
                }, new TransactionResponse
                {
                    AccountId = expectedAccount1.Id,
                    Amount    = 500,
                    Timestamp = DateTime.Now
                }
            };

            transactionClientMoq.Setup(x => x.GetByAccountId(expectedAccount1.Id)).Returns(async() =>
                                                                                           await Task.FromResult(expectedTransactions1));

            var expectedTransactions2 = new List <TransactionResponse>
            {
                new TransactionResponse
                {
                    AccountId = expectedAccount2.Id,
                    Amount    = 25,
                    Timestamp = DateTime.Now
                }, new TransactionResponse
                {
                    AccountId = expectedAccount2.Id,
                    Amount    = 250,
                    Timestamp = DateTime.Now
                }
            };

            transactionClientMoq.Setup(x => x.GetByAccountId(expectedAccount2.Id)).Returns(async() =>
                                                                                           await Task.FromResult(expectedTransactions2));

            var resultUserInfo = await accountCore.GetUserInfo(customerId);

            Assert.NotNull(resultUserInfo);
            var expectedTransactionsCount = expectedTransactions1.Count + expectedTransactions2.Count;

            Assert.AreEqual(expectedTransactionsCount, resultUserInfo.Accounts.SelectMany(x => x.Transactions).Count());
        }