Exemple #1
0
        public async Task RunAsync(Func <Task> next)
        {
            var provider    = new TestServiceProvider();
            var testContext = new TestContext(provider);

            provider.AddTransient <ITestMiddleware, SetNameTestMiddleware> ();
            provider.AddTransient <ITestMiddleware, SetDisplayNameTestMiddleware> ();
            provider.AddTransient <ContextMiddlewareFactory, ContextMiddlewareFactory> ();
            var factory = provider.GetService <ContextMiddlewareFactory> ();

            Console.WriteLine("Without generic type implementation:");
            await factory.UseMiddlewareAsync(testContext, next);
        }
        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;
            }
        }