private void SetupDatabase(IServiceCollection services)
        {
            services.AddSingleton <DataContext>(new DataContext(
                                                    new DbContextOptionsBuilder <DataContext>()
                                                    .UseInMemoryDatabase("ReportTest")
                                                    .Options
                                                    ));

            var sp = services.BuildServiceProvider();

            using (var scope = sp.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;
                var db             = scopedServices.GetRequiredService <DataContext>();
                var logger         = scopedServices.GetRequiredService <ILogger <StartupAppFactory> >();

                db.Database.EnsureCreated();

                try
                {
                    Fakes.InitializeDbForTesting(db);

                    // And then to detach everything
                    foreach (var entity in db.ChangeTracker.Entries())
                    {
                        entity.State = EntityState.Detached;
                    }
                }
                catch (Exception ex)
                {
                    logger.LogError(
                        ex,
                        "An error occurred seeding the database with test data. Error: {Message}",
                        ex.Message
                        );
                }
            }
        }