public void Test_Run_Environment_Aware_Scripts_All_Directories() { //arrange var directoryService = new DirectoryService(); var fileService = new FileService(); var workspaceService = new WorkspaceService(_traceService, directoryService, fileService); workspaceService.Init(_testConfiguration.WorkspacePath); //creare environment-aware directories var init_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.INIT, "_dev")).FullName; var init_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.INIT, "_test")).FullName; var init_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.INIT, "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(init_dev, $"init_dev.sql"), _testDataService.GetSqlForCreateDbObject($"init_dev")); _testDataService.CreateScriptFile(Path.Combine(init_test, $"init_test.sql"), _testDataService.GetSqlForCreateDbObject($"init_test")); _testDataService.CreateScriptFile(Path.Combine(init_prod, $"init_prod.sql"), _testDataService.GetSqlForCreateDbObject($"init_prod")); var pre_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.PRE, "_dev")).FullName; var pre_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.PRE, "_test")).FullName; var pre_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.PRE, "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(pre_dev, $"pre_dev.sql"), _testDataService.GetSqlForCreateDbObject($"pre_dev")); _testDataService.CreateScriptFile(Path.Combine(pre_test, $"pre_test.sql"), _testDataService.GetSqlForCreateDbObject($"pre_test")); _testDataService.CreateScriptFile(Path.Combine(pre_prod, $"pre_prod.sql"), _testDataService.GetSqlForCreateDbObject($"pre_prod")); var v00_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_dev")).FullName; var v00_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_test")).FullName; var v00_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(v00_dev, $"v00_dev.sql"), _testDataService.GetSqlForCreateDbObject($"v00_dev")); _testDataService.CreateScriptFile(Path.Combine(v00_test, $"v00_test.sql"), _testDataService.GetSqlForCreateDbObject($"v00_test")); _testDataService.CreateScriptFile(Path.Combine(v00_prod, $"v00_prod.sql"), _testDataService.GetSqlForCreateDbObject($"v00_prod")); var draft_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.DRAFT, "_dev")).FullName; var draft_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.DRAFT, "_test")).FullName; var draft_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.DRAFT, "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(draft_dev, $"draft_dev.sql"), _testDataService.GetSqlForCreateDbObject($"draft_dev")); _testDataService.CreateScriptFile(Path.Combine(draft_test, $"draft_test.sql"), _testDataService.GetSqlForCreateDbObject($"draft_test")); _testDataService.CreateScriptFile(Path.Combine(draft_prod, $"draft_prod.sql"), _testDataService.GetSqlForCreateDbObject($"draft_prod")); var post_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.POST, "_dev")).FullName; var post_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.POST, "_test")).FullName; var post_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, RESERVED_DIRECTORY_NAME.POST, "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(post_dev, $"post_dev.sql"), _testDataService.GetSqlForCreateDbObject($"post_dev")); _testDataService.CreateScriptFile(Path.Combine(post_test, $"post_test.sql"), _testDataService.GetSqlForCreateDbObject($"post_test")); _testDataService.CreateScriptFile(Path.Combine(post_prod, $"post_prod.sql"), _testDataService.GetSqlForCreateDbObject($"post_prod")); //act var configuration = _testConfiguration.GetFreshConfiguration(); configuration.TargetVersion = "v0.00"; configuration.Environment = "test"; var migrationService = _migrationServiceFactory.Create(configuration.Platform); migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_prod").ShouldBeFalse(); }
public void Test_Run_All_NonVersion_Scripts_Executed(string scriptFolder) { //arrange var localVersionService = new LocalVersionService(_traceService); localVersionService.Init(_testConfiguration.WorkspacePath); _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, scriptFolder), $"test_{scriptFolder}.sql"), _testDataService.GetSqlForCreateDbObject($"test_{scriptFolder}")); //act var migrationService = _migrationServiceFactory.Create(_testConfiguration.Platform); migrationService.Initialize(_testConfiguration.ConnectionString); migrationService.Run(_testConfiguration.WorkspacePath, "v1.00", autoCreateDatabase: true); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, @$ "test_{scriptFolder}").ShouldBeTrue(); }
public void Test_Bulk_Import_With_Default_Separated() { //arrange - prepare bulk destination table var localVersionService = new LocalVersionService(_traceService); localVersionService.Init(_testConfiguration.WorkspacePath); localVersionService.IncrementMajorVersion(_testConfiguration.WorkspacePath, null); string v100Directory = Path.Combine(_testConfiguration.WorkspacePath, "v1.00"); _testDataService.CreateScriptFile(Path.Combine(v100Directory, $"TestCsv.sql"), _testDataService.GetSqlForCreateBulkTable("TestCsv")); //act var migrationService = _migrationServiceFactory.Create(_testConfiguration.Platform); migrationService.Initialize(_testConfiguration.ConnectionString); migrationService.Run(_testConfiguration.WorkspacePath, "v1.00", autoCreateDatabase: true); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "TestCsv").ShouldBeTrue(); //arrange - add new minor version with csv files localVersionService.IncrementMinorVersion(_testConfiguration.WorkspacePath, null); string v101Directory = Path.Combine(_testConfiguration.WorkspacePath, "v1.01"); File.Copy(Path.Combine(Path.Combine(Environment.CurrentDirectory, "Core"), "TestCsv.csv"), Path.Combine(v101Directory, "TestCsv.csv")); //act migrationService.Run(_testConfiguration.WorkspacePath, "v1.01", autoCreateDatabase: true); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "TestCsv").ShouldBeTrue(); var results = _testDataService.GetBulkTestData(_testConfiguration.ConnectionString, "TestCsv"); var testDataRows = new List <BulkTestDataRow> { new BulkTestDataRow { FirstName = "Jack", LastName = "Poole", BirthDate = new DateTime(1980, 1, 1) }, new BulkTestDataRow { FirstName = "Diana", LastName = "Churchill", BirthDate = new DateTime(1980, 1, 1) }, new BulkTestDataRow { FirstName = "Rebecca", LastName = "Lyman", BirthDate = new DateTime(1980, 1, 1) }, new BulkTestDataRow { FirstName = "Sam", LastName = "Macdonald", BirthDate = new DateTime(1980, 1, 1) }, new BulkTestDataRow { FirstName = "Matt", LastName = "Paige", BirthDate = new DateTime(1980, 1, 1) }, }; results.Count.ShouldBe(5); testDataRows.All(t => results.Exists(r => t.FirstName == r.FirstName && t.LastName == r.LastName && t.BirthDate == r.BirthDate )).ShouldBeTrue(); }
public void Test_Run_Environment_Aware_Scripts_All_Directories() { //arrange var localVersionService = new LocalVersionService(_traceService); localVersionService.Init(_testConfiguration.WorkspacePath); //creare environment-aware directories var init_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_init", "_dev")).FullName; var init_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_init", "_test")).FullName; var init_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_init", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(init_dev, $"init_dev.sql"), _testDataService.GetSqlForCreateDbObject($"init_dev")); _testDataService.CreateScriptFile(Path.Combine(init_test, $"init_test.sql"), _testDataService.GetSqlForCreateDbObject($"init_test")); _testDataService.CreateScriptFile(Path.Combine(init_prod, $"init_prod.sql"), _testDataService.GetSqlForCreateDbObject($"init_prod")); var pre_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_pre", "_dev")).FullName; var pre_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_pre", "_test")).FullName; var pre_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_pre", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(pre_dev, $"pre_dev.sql"), _testDataService.GetSqlForCreateDbObject($"pre_dev")); _testDataService.CreateScriptFile(Path.Combine(pre_test, $"pre_test.sql"), _testDataService.GetSqlForCreateDbObject($"pre_test")); _testDataService.CreateScriptFile(Path.Combine(pre_prod, $"pre_prod.sql"), _testDataService.GetSqlForCreateDbObject($"pre_prod")); var v00_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_dev")).FullName; var v00_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_test")).FullName; var v00_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "v0.00", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(v00_dev, $"v00_dev.sql"), _testDataService.GetSqlForCreateDbObject($"v00_dev")); _testDataService.CreateScriptFile(Path.Combine(v00_test, $"v00_test.sql"), _testDataService.GetSqlForCreateDbObject($"v00_test")); _testDataService.CreateScriptFile(Path.Combine(v00_prod, $"v00_prod.sql"), _testDataService.GetSqlForCreateDbObject($"v00_prod")); var draft_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_draft", "_dev")).FullName; var draft_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_draft", "_test")).FullName; var draft_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_draft", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(draft_dev, $"draft_dev.sql"), _testDataService.GetSqlForCreateDbObject($"draft_dev")); _testDataService.CreateScriptFile(Path.Combine(draft_test, $"draft_test.sql"), _testDataService.GetSqlForCreateDbObject($"draft_test")); _testDataService.CreateScriptFile(Path.Combine(draft_prod, $"draft_prod.sql"), _testDataService.GetSqlForCreateDbObject($"draft_prod")); var post_dev = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_post", "_dev")).FullName; var post_test = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_post", "_test")).FullName; var post_prod = Directory.CreateDirectory(Path.Combine(_testConfiguration.WorkspacePath, "_post", "_prod")).FullName; _testDataService.CreateScriptFile(Path.Combine(post_dev, $"post_dev.sql"), _testDataService.GetSqlForCreateDbObject($"post_dev")); _testDataService.CreateScriptFile(Path.Combine(post_test, $"post_test.sql"), _testDataService.GetSqlForCreateDbObject($"post_test")); _testDataService.CreateScriptFile(Path.Combine(post_prod, $"post_prod.sql"), _testDataService.GetSqlForCreateDbObject($"post_prod")); //act var migrationService = _migrationServiceFactory.Create(_testConfiguration.Platform); migrationService.Initialize(_testConfiguration.ConnectionString); migrationService.Run(_testConfiguration.WorkspacePath, "v0.00", autoCreateDatabase: true, environmentCode: "test"); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "init_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "pre_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "v00_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "draft_prod").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_dev").ShouldBeFalse(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_test").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "post_prod").ShouldBeFalse(); }
public void Test_Create_SingleLine_Empty_Script() { //arrange var localVersionService = new LocalVersionService(_traceService); localVersionService.Init(_testConfiguration.WorkspacePath); localVersionService.IncrementMajorVersion(_testConfiguration.WorkspacePath, null); string sqlStatement = $@" "; _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, "v1.00"), $"Test_Single_Run_Empty.sql"), sqlStatement); //act var migrationService = _migrationServiceFactory.Create(_testConfiguration.Platform); migrationService.Initialize(_testConfiguration.ConnectionString); migrationService.Run(_testConfiguration.WorkspacePath, "v1.00", autoCreateDatabase: true); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "Test_Single_Run_Empty").ShouldBeFalse(); }
public void Test_Run_All_NonVersion_Scripts_Executed(string scriptFolder) { //arrange var directoryService = new DirectoryService(); var fileService = new FileService(); var workspaceService = new WorkspaceService(_traceService, directoryService, fileService); workspaceService.Init(_testConfiguration.WorkspacePath); _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, scriptFolder), $"test_{scriptFolder}.sql"), _testDataService.GetSqlForCreateDbObject(TEST_DBOBJECTS.DB_OBJECT_1)); //act var configuration = _testConfiguration.GetFreshConfiguration(); var migrationService = _migrationServiceFactory.Create(configuration.Platform); migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, TEST_DBOBJECTS.DB_OBJECT_1).ShouldBeTrue(); }
public void Test_Run_Ok_Without_Explicit_Transaction() { //arrange var directoryService = new DirectoryService(); var fileService = new FileService(); var workspaceService = new WorkspaceService(_traceService, directoryService, fileService); workspaceService.Init(_testConfiguration.WorkspacePath); workspaceService.IncrementMajorVersion(_testConfiguration.WorkspacePath, null); _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, "v1.00"), $"test_v1_00.sql"), _testDataService.GetSqlForCreateDbObject($"test_v1_00")); workspaceService.IncrementMinorVersion(_testConfiguration.WorkspacePath, null); _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, "v1.01"), $"test_v1_01.sql"), _testDataService.GetSqlForCreateDbObject($"test_v1_01")); workspaceService.IncrementMinorVersion(_testConfiguration.WorkspacePath, null); _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, "v1.02"), $"test_v1_02.sql"), _testDataService.GetSqlForCreateDbObject($"test_v1_02")); //act var configuration = _testConfiguration.GetFreshConfiguration(); var migrationService = _migrationServiceFactory.Create(configuration.Platform); migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "test_v1_00").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "test_v1_01").ShouldBeTrue(); _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "test_v1_02").ShouldBeTrue(); }
public void Test_Create_SingleLine_Empty_Script() { //arrange var directoryService = new DirectoryService(); var fileService = new FileService(); var workspaceService = new WorkspaceService(_traceService, directoryService, fileService); workspaceService.Init(_testConfiguration.WorkspacePath); workspaceService.IncrementMajorVersion(_testConfiguration.WorkspacePath, null); string sqlStatement = $@" "; _testDataService.CreateScriptFile(Path.Combine(Path.Combine(_testConfiguration.WorkspacePath, "v1.00"), $"Test_Single_Run_Empty.sql"), sqlStatement); //act var configuration = _testConfiguration.GetFreshConfiguration(); var migrationService = _migrationServiceFactory.Create(configuration.Platform); migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, "Test_Single_Run_Empty").ShouldBeFalse(); }
public void Test_Bulk_Import_With_Default_Separator() { //arrange - prepare bulk destination table var directoryService = new DirectoryService(); var fileService = new FileService(); var workspaceService = new WorkspaceService(_traceService, directoryService, fileService); workspaceService.Init(_testConfiguration.WorkspacePath); workspaceService.IncrementMajorVersion(_testConfiguration.WorkspacePath, null); string v100Directory = Path.Combine(_testConfiguration.WorkspacePath, "v1.00"); _testDataService.CreateScriptFile(Path.Combine(v100Directory, $"TestCsv.sql"), _testDataService.GetSqlForCreateBulkTable(TEST_DBOBJECTS.TestCsv)); //act var configuration = _testConfiguration.GetFreshConfiguration(); configuration.TargetVersion = "v1.00"; var migrationService = _migrationServiceFactory.Create(configuration.Platform); migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, TEST_DBOBJECTS.TestCsv).ShouldBeTrue(); //arrange - add new minor version with csv files workspaceService.IncrementMinorVersion(_testConfiguration.WorkspacePath, null); string v101Directory = Path.Combine(_testConfiguration.WorkspacePath, "v1.01"); File.Copy(Path.Combine(Path.Combine(Environment.CurrentDirectory, "Data"), "TestCsv.csv"), Path.Combine(v101Directory, "TestCsv.csv")); //act configuration.TargetVersion = "v1.01"; migrationService.Run(); //assert _testDataService.CheckIfDbObjectExist(_testConfiguration.ConnectionString, TEST_DBOBJECTS.TestCsv).ShouldBeTrue(); var results = _testDataService.GetBulkTestData(_testConfiguration.ConnectionString, TEST_DBOBJECTS.TestCsv); var testDataRows = new List <BulkTestDataRow> { new BulkTestDataRow { FirstName = "Jack", LastName = "Poole", BirthDate = "1980-01-01" }, new BulkTestDataRow { FirstName = "Diana", LastName = "Churchill", BirthDate = "1980-01-01" }, new BulkTestDataRow { FirstName = "Rebecca", LastName = "Lyman", BirthDate = "1980-01-01" }, new BulkTestDataRow { FirstName = "Sam", LastName = "Macdonald", BirthDate = "1980-01-01" }, new BulkTestDataRow { FirstName = "Matt", LastName = "Paige", BirthDate = "1980-01-01" } }; results.Count.ShouldBe(5); testDataRows.All(t => results.Exists(r => t.FirstName == r.FirstName && t.LastName == r.LastName && t.BirthDate == r.BirthDate )).ShouldBeTrue(); }