Newer
Older
HotColdData / Test.cs
@Derek Comartin Derek Comartin on 11 Jul 2022 1 KB Init
using System;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Xunit;

namespace HotWarmCold
{
    public class Test
    {
        private readonly OrderDbContext.DbFactory _factory;

        public Test()
        {
            var sc = new ServiceCollection();
            sc.AddSingleton<OrderDbContext.DbFactory>(_ => OrderDbContext.Factory);
            var provider = sc.BuildServiceProvider();
            _factory = provider.GetRequiredService<OrderDbContext.DbFactory>();
        }

        private async Task AddOrder(Year token)
        {
            await using var db = _factory(token);
            db.Orders.Add(new Order
            {
                OrderId = Guid.NewGuid()
            });
            await db.SaveChangesAsync();
        }

        [Fact]
        public async Task TestFilter()
        {
            var year2021 = new Year(2021);
            await AddOrder(year2021);

            var year2022 = new Year(2022);
            await AddOrder(year2022);
            await AddOrder(year2022);

            await using var db2021 = _factory(year2021);
            var orders2021 = await db2021.Orders.CountAsync();
            Assert.Equal(1, orders2021);
            
            await using var db = _factory(year2022);
            var orders2022 = await db.Orders.CountAsync();
            Assert.Equal(2, orders2022);
        }
    }
}