public AccountCreatorServiceTests()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            _context     = new ApplicationDbContext(options);
            _accountRepo = new AccountRepositoryAsync(_context);
            _transRepo   = new TransactionRepositoryAsync(_context);
            _mockLogger  = new Mock <ILogger <AccountController> >();
        }
        public AccountBalanceServiceTests()
        {
            var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;

            _context     = new ApplicationDbContext(options);
            _accountRepo = new AccountRepositoryAsync(_context);
            _transRepo   = new TransactionRepositoryAsync(_context);
            _mockLogger  = new Mock <ILogger <AccountController> >();
            var config = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new PaymentApiMapper());
            });

            _mapper = config.CreateMapper();
        }
        public async Task GetFirstOrDefaultAsync_FindTransactionAndIncludeAccount_ExpectAccountInResult()
        {
            Account newAccount = new Account {
                Name = $"Johnny"
            };

            _context.Accounts.Add(newAccount).Should().NotBeNull();
            _context.SaveChanges().Should().BeGreaterThan(0);
            _context.Transactions.Add(new Transaction {
                AccountId = newAccount.Id, Date = new DateTime(2020, 1, 1), Amount = 1000
            }).Should().NotBeNull();
            _context.SaveChanges().Should().BeGreaterThan(0);

            TransactionRepositoryAsync transRepo = new TransactionRepositoryAsync(_context);
            Transaction transactionFromDb        = await transRepo.GetFirstOrDefaultAsync(t => t.AccountId == newAccount.Id, includeProperties : nameof(Account));

            transactionFromDb.Should().NotBeNull();
            Account account = transactionFromDb.Account;

            account.Should().NotBeNull();
            account.Name.Should().Be(newAccount.Name);
            account.Id.Should().Be(newAccount.Id);
        }
        public async Task GetAllAsync_FindTransactionsIncludeAccount_ExpectAccountToBeIncluded()
        {
            Account newAccount = new Account {
                Name = $"Johnny"
            };

            _context.Accounts.Add(newAccount).Should().NotBeNull();
            _context.SaveChanges().Should().BeGreaterThan(0);
            _context.Transactions.Add(new Transaction {
                AccountId = newAccount.Id, Date = new DateTime(2020, 1, 1), Amount = 1000
            }).Should().NotBeNull();
            _context.SaveChanges().Should().BeGreaterThan(0);
            TransactionRepositoryAsync transRepo         = new TransactionRepositoryAsync(_context);
            IEnumerable <Transaction>  transactionFromDb = await transRepo.GetAllAsync(t => t.AccountId == newAccount.Id, includeProperties : nameof(Account));

            transactionFromDb.Should().NotBeNull();
            transactionFromDb.Should().NotBeEmpty();
            Account account = transactionFromDb.ToList()[0].Account;

            account.Should().NotBeNull();
            account.Name.Should().Be(newAccount.Name);
            account.Id.Should().Be(newAccount.Id);
        }