Example #1
0
        private WebApplicationFactory <EmptyStartup> CreateFactory()
        {
            var factory = new IntegrationTestWebApplicationFactory();

            factory.ConfigureServicesBeforeStartup(services =>
            {
                _beforeServicesConfiguration?.Invoke(services);

                services.AddSingleton(sp =>
                {
                    var client = new MongoClient(_runner.ConnectionString);
                    return(client.GetDatabase($"JsonApiDotNetCore_MongoDb_{new Random().Next()}_Test"));
                });

                services.AddJsonApi(ConfigureJsonApiOptions, facade => facade.AddCurrentAssembly());
                services.AddJsonApiMongoDb();

                services.AddScoped(typeof(IResourceReadRepository <>), typeof(MongoDbRepository <>));
                services.AddScoped(typeof(IResourceReadRepository <,>), typeof(MongoDbRepository <,>));
                services.AddScoped(typeof(IResourceWriteRepository <>), typeof(MongoDbRepository <>));
                services.AddScoped(typeof(IResourceWriteRepository <,>), typeof(MongoDbRepository <,>));
                services.AddScoped(typeof(IResourceRepository <>), typeof(MongoDbRepository <>));
                services.AddScoped(typeof(IResourceRepository <,>), typeof(MongoDbRepository <,>));
            });

            factory.ConfigureServicesAfterStartup(_afterServicesConfiguration);

            return(factory);
        }
        private WebApplicationFactory <TRemoteStartup> CreateFactory()
        {
            string postgresPassword   = Environment.GetEnvironmentVariable("PGPASSWORD") ?? "postgres";
            string dbConnectionString =
                $"Host=localhost;Port=5432;Database=JsonApiTest-{Guid.NewGuid():N};User ID=postgres;Password={postgresPassword}";

            var factory = new IntegrationTestWebApplicationFactory();

            factory.ConfigureLogging(_loggingConfiguration);

            factory.ConfigureServicesBeforeStartup(services =>
            {
                _beforeServicesConfiguration?.Invoke(services);

                services.AddDbContext <TDbContext>(options =>
                {
                    options.UseNpgsql(dbConnectionString,
                                      postgresOptions => postgresOptions.SetPostgresVersion(new Version(9, 6)));

                    options.EnableSensitiveDataLogging();
                    options.EnableDetailedErrors();
                });
            });

            factory.ConfigureServicesAfterStartup(_afterServicesConfiguration);

            using IServiceScope scope = factory.Services.CreateScope();
            var dbContext = scope.ServiceProvider.GetRequiredService <TDbContext>();

            dbContext.Database.EnsureCreated();

            return(factory);
        }