public void PlanManagementTest() { var dbName = TestDatabaseNames.GetConsistentName("PlanManagementTests"); var db = DiscoveredServerICanCreateRandomDatabasesAndTablesOn.ExpectDatabase(dbName); db.Create(true); BulkTestsData bulk = new BulkTestsData(CatalogueRepository, DiscoveredDatabaseICanCreateRandomTablesIn, 100); bulk.SetupTestData(); bulk.ImportAsCatalogue(); var planManager = new ForwardEngineerANOCataloguePlanManager(RepositoryLocator, bulk.catalogue); planManager.TargetDatabase = db; //no operations are as yet configured Assert.DoesNotThrow(() => planManager.Check(new ThrowImmediatelyCheckNotifier())); //create a table with the same name in the endpoint database to confirm that that's a problem db.CreateTable(bulk.tableInfo.GetRuntimeName(), new DatabaseColumnRequest[] { new DatabaseColumnRequest("fish", "varchar(100)") }); //throws because table already exists Assert.Throws <Exception>(() => planManager.Check(new ThrowImmediatelyCheckNotifier())); db.ExpectTable(bulk.tableInfo.GetRuntimeName()).Drop(); //back to being fine again Assert.DoesNotThrow(() => planManager.Check(new ThrowImmediatelyCheckNotifier())); //setup test rules for migrator CreateMigrationRules(planManager, bulk); //rules should pass Assert.DoesNotThrow(() => planManager.Check(new ThrowImmediatelyCheckNotifier())); var chi = bulk.GetColumnInfo("chi"); Assert.Throws <Exception>(() => { planManager.GetPlanForColumnInfo(chi).Plan = Plan.Drop; planManager.GetPlanForColumnInfo(chi).Check(new ThrowImmediatelyCheckNotifier()); } , "Should not be able to drop primary key column"); db.Drop(); }
private void CreateMigrationRules(ForwardEngineerANOCataloguePlanManager planManager, BulkTestsData bulk) { var chi = bulk.GetColumnInfo("chi"); var anoChi = new ANOTable(CatalogueRepository, ANOStore_ExternalDatabaseServer, "ANOCHI", "C"); anoChi.NumberOfIntegersToUseInAnonymousRepresentation = 9; anoChi.NumberOfCharactersToUseInAnonymousRepresentation = 1; anoChi.SaveToDatabase(); anoChi.PushToANOServerAsNewTable(chi.Data_type, new ThrowImmediatelyCheckNotifier()); planManager.GetPlanForColumnInfo(chi).Plan = Plan.ANO; planManager.GetPlanForColumnInfo(chi).ANOTable = anoChi; var dob = bulk.GetColumnInfo("date_of_birth"); planManager.GetPlanForColumnInfo(dob).Plan = Plan.Dilute; planManager.GetPlanForColumnInfo(dob).Dilution = new RoundDateToMiddleOfQuarter(); var postcode = bulk.GetColumnInfo("current_postcode"); planManager.GetPlanForColumnInfo(postcode).Plan = Plan.Dilute; planManager.GetPlanForColumnInfo(postcode).Dilution = new ExcludeRight3OfUKPostcodes(); }