public void AddAmountDepositAsyncTest() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .EnableSensitiveDataLogging() .UseInMemoryDatabase($"db-{Guid.NewGuid()}") .Options; // Run the test against one instance of the context using (var context = new ApplicationDbContext(options)) { InitUsersAsync(context); var customerId = context.Users .AsNoTracking().Where(x => x.UserName == CUSTOMER_USERNAME) .Select(x => x.Id) .SingleOrDefault(); var purseRepository = new PurseRepository(context); var userDepositRepository = new UserDepositRepository(context); var customerProductRepository = new CustomerProductRepository(context); var vendingMachineService = new VendingMachineServiceFake(purseRepository, context); var paymentService = new PaymentService(purseRepository, userDepositRepository, customerProductRepository, vendingMachineService); paymentService.AddAmountDepositAsync(new CoinDTO { TypeCoin = TypeCoin.Price10Rub }, customerId).GetAwaiter(); // у юзера депозит равен 10 Assert.Equal(10, userDepositRepository.GetAmountDepositAsync(customerId).GetAwaiter().GetResult()); // кошелек VM var purseVM = context.Users.AsNoTracking().Where(x => x.UserName == VMUSERNAME) .Include(x => x.Purse) .ThenInclude(x => x.PurseCoins) .SingleOrDefault(); var purseCoins10 = purseVM.Purse.PurseCoins .Where(x => x.TypeCoin == TypeCoin.Price10Rub) .SingleOrDefault(); // у автомата в кошельке монет достоинством 10р будет 101 штука Assert.Equal(101, purseCoins10.Count); } }
public void RetrieveDepositAsyncTest() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase($"db-{Guid.NewGuid()}") .Options; // Run the test against one instance of the context using (var context = new ApplicationDbContext(options)) { var userId = InitUser(context); var userDepositRepository = new UserDepositRepository(context); userDepositRepository.AddAmountDepositAsync((int)TypeCoin.Price1Rub, userId).GetAwaiter().GetResult(); userDepositRepository.RetrieveDepositAsync(userId).GetAwaiter().GetResult(); Assert.Equal(0, userDepositRepository.GetAmountDepositAsync(userId).GetAwaiter().GetResult()); } }