private static InMemoryDatabaseCreator CreateDatabaseCreator(IServiceProvider serviceProvider)
        {
            var optionsBuilder = new DbContextOptionsBuilder();

            optionsBuilder.UseInMemoryDatabase(nameof(InMemoryDatabaseCreatorTest));

            var contextServices = InMemoryTestHelpers.Instance.CreateContextServices(serviceProvider, optionsBuilder.Options);
            var model           = CreateModel();
            var creator         = new InMemoryDatabaseCreator(
                contextServices.GetRequiredService <StateManagerDependencies>().With(model),
                contextServices.GetRequiredService <IInMemoryDatabase>());

            return(creator);
        }
        public async Task EnsureCreatedAsync_returns_true_for_first_use_of_persistent_database_and_false_thereafter()
        {
            var serviceProvider = InMemoryTestHelpers.Instance.CreateServiceProvider();
            var model           = CreateModel();
            var creator         = new InMemoryDatabaseCreator(CreateStore(serviceProvider, persist: true), model);

            Assert.True(await creator.EnsureCreatedAsync());
            Assert.False(await creator.EnsureCreatedAsync());
            Assert.False(await creator.EnsureCreatedAsync());

            creator = new InMemoryDatabaseCreator(CreateStore(serviceProvider, persist: true), model);

            Assert.False(await creator.EnsureCreatedAsync());
        }
        public async Task EnsureCreatedAsync_returns_true_for_first_use_of_persistent_database_and_false_thereafter()
        {
            var serviceProvider = InMemoryTestHelpers.Instance.CreateServiceProvider();
            var model = CreateModel();
            var creator = new InMemoryDatabaseCreator(CreateStore(serviceProvider, persist: true), model);

            Assert.True(await creator.EnsureCreatedAsync());
            Assert.False(await creator.EnsureCreatedAsync());
            Assert.False(await creator.EnsureCreatedAsync());

            creator = new InMemoryDatabaseCreator(CreateStore(serviceProvider, persist: true), model);

            Assert.False(await creator.EnsureCreatedAsync());
        }