public AppDatabaseSetupService(LoggingMigrationContext logDb, AppMigrationContext appDb, AppDbContext appDbContext, IConnectionStringFactory connectionStringFactory) { _logMigrationDb = logDb; _appMigrationDb = appDb; _appDbContext = appDbContext; _connectionStringFactory = connectionStringFactory; }
public void Initialize() { AutoPocoConfiguration.SaltVector = ""; AutoPocoConfiguration.SecretKey = ""; mig = new Mock <IMigrationsAssembly>(); applied = new Mock <IHistoryRepository>(); applied.Setup(c => c.GetAppliedMigrations()).Returns(new List <HistoryRow>()); var migrator = new Mock <IMigrator>(); migrator.Setup(c => c.Migrate(It.IsAny <string>())) .Callback <string>(c => migrations++); var connection = new Mock <DbConnection>(); connection.Setup(c => c.ConnectionString).Returns("conn1"); var connService = new Mock <IRelationalConnection>(); connService.Setup(c => c.DbConnection).Returns(connection.Object); var services = new ServiceCollection(); services.AddEntityFrameworkSqlite(); services.AddSingleton(mig.Object); services.AddSingleton(applied.Object); services.AddSingleton(migrator.Object); services.AddSingleton(connService.Object); var appOptionBuilder = new DbContextOptionsBuilder <AppDbContext>(); appOptionBuilder.UseInMemoryDatabase(databaseName: connString); appDb = new AppDbContext(appOptionBuilder.Options); appDb.Connector.AddRange( new Connector { Id = Guid.NewGuid(), Name = "appDb" }, new Connector { Id = Guid.NewGuid(), Name = "logDb" } ); appDb.SaveChanges(); var migContextOptions = new DbContextOptionsBuilder <AppMigrationContext>() .UseSqlite(connString) .UseInternalServiceProvider(services.BuildServiceProvider()); var migLogContextOptions = new DbContextOptionsBuilder <LoggingMigrationContext>() .UseSqlite(connString) .UseInternalServiceProvider(services.BuildServiceProvider()); var appMigDb = new AppMigrationContext(migContextOptions.Options); var logMigDb = new LoggingMigrationContext(migLogContextOptions.Options); var factory = new Mock <IConnectionStringFactory>(); factory.Setup(c => c.GetConnectionInformation(appDb.Database)) .Returns(new ConnectionInformation { InitialCatalog = "cat1" }); setupService = new AppDatabaseSetupService(logMigDb, appMigDb, appDb, factory.Object); }