Пример #1
0
        public static void Setup(TestServiceProvider services, Action <CardOverflowDb> setupDb)
        {
            if (!services.IsProviderInitialized)
            {
                services.AddBlazoredToast();
                services.AddScoped <NavigationManager, MockNavigationManager>();
                services.AddBootstrapCss();
                services.AddTransient <IValidator <FollowCommandViewModel>, FollowCommandViewModelValidator>();
                services.AddSingleton <DbExecutor>();
                services.AddSingleton <TimeProvider>();
                services.AddSingleton <Scheduler>();
                services.AddSingleton <RandomProvider>();
                services.AddDbContextPool <CardOverflowDb>(x => x.UseInMemoryDatabase(Guid.NewGuid().ToString()));
                services.AddSingleton <Func <Task <NpgsqlConnection> > >(_ => async() => {
                    var conn = new NpgsqlConnection("Host=localhost;Database=CardOverflow;Username=postgres;");
                    await conn.OpenAsync();
                    return(conn);
                });
            }

            using var databaseContext = services.GetService <CardOverflowDb>();
            databaseContext.Database.EnsureDeleted();
            databaseContext.Database.EnsureCreated();
            setupDb(databaseContext);
            databaseContext.SaveChanges();
            foreach (var entity in databaseContext.ChangeTracker.Entries())
            {
                entity.State = EntityState.Detached;
            }
        }