/// <inheritdoc />
        public async Task <List <Transaction> > Spend(int points, CancellationToken cancellationToken = default)
        {
            var transactions = await _dbContext.Transactions
                               .Where(t => t.RemainingPoints != 0)
                               .OrderBy(t => t.Timestamp)
                               .ToListAsync(cancellationToken);

            var newTransactions = await SpendPoints(transactions, points, cancellationToken);

            _dbContext.AddRange(newTransactions);
            await _dbContext.SaveChangesAsync(cancellationToken);

            return(_mapper.Map <List <Transaction> >(newTransactions));
        }
示例#2
0
        public RewardsServiceTests()
        {
            _mapper = new Mapper(AutoMapperHelper.ConfigureAutomapper());

            var builder = new DbContextOptionsBuilder <RewardsDbContext>();

            builder.UseInMemoryDatabase(databaseName: "Rewards");

            var dbContextOptions = builder.Options;

            _rewardsDbContext = new RewardsDbContext(dbContextOptions);
            // Delete existing db before creating a new one
            _rewardsDbContext.Database.EnsureDeleted();
            _rewardsDbContext.Database.EnsureCreated();

            _rewardsDbContext.AddRange(mockTransactions);
            _rewardsDbContext.SaveChanges();
        }