def test_migrate_table_pks(self): # Prepare source objects: source_catalog, source_schema, source_table = self._set_catalog_schema_table( 'AdventureWorks', 'Purchasing', 'VendorContact') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, source_catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, source_table, grt.Dict()) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTablePK(self.connection, source_table) self.assertEqual(res, 0) # Do migration: target_catalog = grt.classes.db_mysql_Catalog() res = DbMssqlMigration.migrateCatalog(source_catalog, target_catalog) self.assertEqual(res, 0) target_table = grt.classes.db_mysql_Table() res = DbMssqlMigration.migrateTableToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableColumnsToMySQL( source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTablePrimaryKeyToMySQL( source_table, target_table) self.assertEqual(res, 0) pk_cols = [ column.name for column in target_table.columns if target_table.isPrimaryKeyColumn(column) ] self.assertEqual(set(['VendorID', 'ContactID']), set(pk_cols))
def test_rev_eng_pks(self): catalog, schema, table = self._set_catalog_schema_table('AdventureWorks', 'Purchasing', 'VendorContact') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, table) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTablePK(self.connection, table) self.assertEqual(res, 0) pk_cols = [ column.name for column in table.columns if table.isPrimaryKeyColumn(column) ] self.assertEqual(set(['VendorID', 'ContactID']), set(pk_cols)) # Check if the columns have been added to the table primary key columns list: pk_cols = [column.name for column in table.primaryKey.columns] self.assertEqual(set(['VendorID', 'ContactID']), set(pk_cols)) # Check fail on table with empty columns: table1 = grt.classes.db_mssql_Table() table1.name = 'Vendor' table1.owner = schema res = DbMssqlRE.reverseEngineerTablePK(self.connection, table1) self.assertEqual(res, 1) pk_cols = [ column.name for column in table1.columns if table1.isPrimaryKeyColumn(column) ] self.assertEqual(pk_cols, [])
def test_migrate_table_pks(self): # Prepare source objects: source_catalog, source_schema, source_table = self._set_catalog_schema_table('AdventureWorks', 'Purchasing', 'VendorContact') res = DbMssqlRE.reverseEngineerUserDatatypes(self.connection, source_catalog) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTableColumns(self.connection, source_table, grt.Dict()) self.assertEqual(res, 0) res = DbMssqlRE.reverseEngineerTablePK(self.connection, source_table) self.assertEqual(res, 0) # Do migration: target_catalog = grt.classes.db_mysql_Catalog() res = DbMssqlMigration.migrateCatalog(source_catalog, target_catalog) self.assertEqual(res, 0) target_table = grt.classes.db_mysql_Table() res = DbMssqlMigration.migrateTableToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTableColumnsToMySQL(source_table, target_table) self.assertEqual(res, 0) res = DbMssqlMigration.migrateTablePrimaryKeyToMySQL(source_table, target_table) self.assertEqual(res, 0) pk_cols = [ column.name for column in target_table.columns if target_table.isPrimaryKeyColumn(column) ] self.assertEqual(set(['VendorID', 'ContactID']), set(pk_cols))