public void Load_Fills_Object_Correctly() { _fileManagerMock.ReadAllText("migratio.yml", configContent); var sut = new ConfigurationManager(_fileManagerMock.Object); var result = sut.Load("migratio.yml"); Assert.True(result); var config = sut.Config; Assert.Equal("/dev/migrations", config.Directories.Base); Assert.Equal("/dev/migrations/rollout", config.Directories.Rollout); Assert.Equal("/dev/migrations/rollback", config.Directories.Rollback); Assert.Equal("/dev/migrations/seeders", config.Directories.Seeders); Assert.Equal("MG_DB_PASSWORD", config.EnvMapping.FirstOrDefault().Key); Assert.Equal("DB_USERNAME", config.EnvMapping.FirstOrDefault().Value); Assert.Equal("./backend.env", config.EnvFile); Assert.Equal("TestDB", config.Auth.Postgres.Database); Assert.Equal("localhost", config.Auth.Postgres.Host); Assert.Equal(1234, config.Auth.Postgres.Port); Assert.Equal("postgres", config.Auth.Postgres.Username); Assert.Equal("${{MG_DB_PASSWORD}}", config.Auth.Postgres.Password); Assert.True(config.ReplaceVariables); }
public void InvokeMgRollback_Rollbacks_Correct_Migrations() { ConfigManagerMock.ConfigReturns(null); DbMock.MigrationTableExists(true); DbMock.GetLatestIteration(1); DbMock.GetAppliedScriptsForLatestIteration(new[] { new Migration { Iteration = 1, MigrationId = "two" }, new Migration { Iteration = 1, MigrationId = "three" }, }); FileManagerMock.GetAllFilesInFolder(new[] { "migrations/rollback/one.sql", "migrations/rollback/two.sql", "migrations/rollback/three.sql", }); ConfigManagerMock.RollbackDirectory("migrations/rollback"); FileManagerMock.ReadAllText("migrations/rollback/two.sql", "rollback 2"); FileManagerMock.ReadAllText("migrations/rollback/three.sql", "rollback 3"); DbMock.RunTransactionAny(1); var command = new InvokeMgRollback(GetMockedDependencies()) { Database = "database", Host = "host", Port = 1111, Schema = "public", Username = "******" }; var result = command.Invoke()?.OfType <string>().ToArray(); Assert.Contains("Found 2 migrations applied in iteration 1", result); Assert.Contains("Migration one was not applied in latest iteration, skipping", result); Assert.Contains("Adding rollback of migration: two to transaction", result); FileManagerMock.VerifyReadAllText("migrations/rollback/one.sql", Times.Never()); var transactions = "rollback 2;" + Environment.NewLine + "DELETE FROM \"public\".\"MIGRATIONS\" WHERE \"MIGRATION_ID\" = 'two' AND \"ITERATION\" = '1';" + Environment.NewLine + "rollback 3;" + Environment.NewLine + "DELETE FROM \"public\".\"MIGRATIONS\" WHERE \"MIGRATION_ID\" = 'three' AND \"ITERATION\" = '1';" + Environment.NewLine; DbMock.VerifyRunTransaction(transactions); }
public void GetMgUsedVariables_Returns_Correct_Variables() { FileManagerMock.FileExists("migrations/rollout/one.sql", true); FileManagerMock.ReadAllText("migrations/rollout/one.sql", "SELECT ${{VAR_ME}} FROM ${{VAR_YOU}}"); var command = new GetMgUsedVariables(GetMockedDependencies()) { MigrationFile = "migrations/rollout/one.sql" }; var result = command.Invoke()?.OfType <string[]>()?.First(); Assert.Equal(new[] { "VAR_ME", "VAR_YOU" }, result); }
public void GetMgUsedVariables_Returns_Empty_When_No_Variables_Is_Used() { FileManagerMock.FileExists("migrations/rollout/one.sql", true); FileManagerMock.ReadAllText("migrations/rollout/one.sql", "SELECT ME FROM YOU"); var command = new GetMgUsedVariables(GetMockedDependencies()) { MigrationFile = "migrations/rollout/one.sql" }; var result = command.Invoke()?.OfType <string[]>()?.First(); Assert.Empty(result); }