eq_(diffs[7][0][5], True)
eq_(diffs[7][0][6], False)
- def test_compare_metadata(self):
- metadata = self.m2
- connection = self.context.bind
-
- diffs = autogenerate.compare_metadata(self.context, metadata)
-
- eq_(
- diffs[0],
- ('add_table', metadata.tables['item'])
- )
-
- eq_(diffs[1][0], 'remove_table')
- eq_(diffs[1][1].name, "extra")
-
- eq_(diffs[2][0], "add_column")
- eq_(diffs[2][1], None)
- eq_(diffs[2][2], "address")
- eq_(diffs[2][3], metadata.tables['address'].c.street)
-
- eq_(diffs[3][0], "add_column")
- eq_(diffs[3][1], None)
- eq_(diffs[3][2], "order")
- eq_(diffs[3][3], metadata.tables['order'].c.user_id)
-
- eq_(diffs[4][0][0], "modify_type")
- eq_(diffs[4][0][1], None)
- eq_(diffs[4][0][2], "order")
- eq_(diffs[4][0][3], "amount")
- eq_(repr(diffs[4][0][5]), "NUMERIC(precision=8, scale=2)")
- eq_(repr(diffs[4][0][6]), "Numeric(precision=10, scale=2)")
-
- eq_(diffs[5][0], 'remove_column')
- eq_(diffs[5][3].name, 'pw')
-
- eq_(diffs[6][0][0], "modify_default")
- eq_(diffs[6][0][1], None)
- eq_(diffs[6][0][2], "user")
- eq_(diffs[6][0][3], "a1")
- eq_(diffs[6][0][6].arg, "x")
-
- eq_(diffs[7][0][0], 'modify_nullable')
- eq_(diffs[7][0][5], True)
- eq_(diffs[7][0][6], False)
-
- def test_compare_metadata_include_object(self):
- metadata = self.m2
-
- def include_object(obj, name, type_, reflected, compare_to):
- if type_ == "table":
- return name in ("extra", "order")
- elif type_ == "column":
- return name != "amount"
- else:
- return True
-
- context = MigrationContext.configure(
- connection=self.bind.connect(),
- opts={
- 'compare_type': True,
- 'compare_server_default': True,
- 'target_metadata': self.m1,
- 'upgrade_token': "upgrades",
- 'downgrade_token': "downgrades",
- 'include_object': include_object,
- }
- )
-
- diffs = autogenerate.compare_metadata(context, metadata)
-
- eq_(diffs[0][0], 'remove_table')
- eq_(diffs[0][1].name, "extra")
-
- eq_(diffs[1][0], "add_column")
- eq_(diffs[1][1], None)
- eq_(diffs[1][2], "order")
- eq_(diffs[1][3], metadata.tables['order'].c.user_id)
-
- def test_compare_metadata_include_symbol(self):
- metadata = self.m2
-
- def include_symbol(table_name, schema_name):
- return table_name in ('extra', 'order')
-
- context = MigrationContext.configure(
- connection=self.bind.connect(),
- opts={
- 'compare_type': True,
- 'compare_server_default': True,
- 'target_metadata': self.m1,
- 'upgrade_token': "upgrades",
- 'downgrade_token': "downgrades",
- 'include_symbol': include_symbol,
- }
- )
-
- diffs = autogenerate.compare_metadata(context, metadata)
-
- eq_(diffs[0][0], 'remove_table')
- eq_(diffs[0][1].name, "extra")
-
- eq_(diffs[1][0], "add_column")
- eq_(diffs[1][1], None)
- eq_(diffs[1][2], "order")
- eq_(diffs[1][3], metadata.tables['order'].c.user_id)
-
- eq_(diffs[2][0][0], "modify_type")
- eq_(diffs[2][0][1], None)
- eq_(diffs[2][0][2], "order")
- eq_(diffs[2][0][3], "amount")
- eq_(repr(diffs[2][0][5]), "NUMERIC(precision=8, scale=2)")
- eq_(repr(diffs[2][0][6]), "Numeric(precision=10, scale=2)")
-
- eq_(diffs[2][1][0], 'modify_nullable')
- eq_(diffs[2][1][2], 'order')
- eq_(diffs[2][1][5], False)
- eq_(diffs[2][1][6], True)
def test_render_nothing(self):
context = MigrationContext.configure(
eq_(diffs[1][0], 'add_table')
eq_(diffs[1][1].name, "child")
+
+class CompareMetadataTest(ModelOne, AutogenTest, TestCase):
+ def test_compare_metadata(self):
+ metadata = self.m2
+
+ diffs = autogenerate.compare_metadata(self.context, metadata)
+
+ eq_(
+ diffs[0],
+ ('add_table', metadata.tables['item'])
+ )
+
+ eq_(diffs[1][0], 'remove_table')
+ eq_(diffs[1][1].name, "extra")
+
+ eq_(diffs[2][0], "add_column")
+ eq_(diffs[2][1], None)
+ eq_(diffs[2][2], "address")
+ eq_(diffs[2][3], metadata.tables['address'].c.street)
+
+ eq_(diffs[3][0], "add_column")
+ eq_(diffs[3][1], None)
+ eq_(diffs[3][2], "order")
+ eq_(diffs[3][3], metadata.tables['order'].c.user_id)
+
+ eq_(diffs[4][0][0], "modify_type")
+ eq_(diffs[4][0][1], None)
+ eq_(diffs[4][0][2], "order")
+ eq_(diffs[4][0][3], "amount")
+ eq_(repr(diffs[4][0][5]), "NUMERIC(precision=8, scale=2)")
+ eq_(repr(diffs[4][0][6]), "Numeric(precision=10, scale=2)")
+
+ eq_(diffs[5][0], 'remove_column')
+ eq_(diffs[5][3].name, 'pw')
+
+ eq_(diffs[6][0][0], "modify_default")
+ eq_(diffs[6][0][1], None)
+ eq_(diffs[6][0][2], "user")
+ eq_(diffs[6][0][3], "a1")
+ eq_(diffs[6][0][6].arg, "x")
+
+ eq_(diffs[7][0][0], 'modify_nullable')
+ eq_(diffs[7][0][5], True)
+ eq_(diffs[7][0][6], False)
+
+ def test_compare_metadata_include_object(self):
+ metadata = self.m2
+
+ def include_object(obj, name, type_, reflected, compare_to):
+ if type_ == "table":
+ return name in ("extra", "order")
+ elif type_ == "column":
+ return name != "amount"
+ else:
+ return True
+
+ context = MigrationContext.configure(
+ connection=self.bind.connect(),
+ opts={
+ 'compare_type': True,
+ 'compare_server_default': True,
+ 'include_object': include_object,
+ }
+ )
+
+ diffs = autogenerate.compare_metadata(context, metadata)
+
+ eq_(diffs[0][0], 'remove_table')
+ eq_(diffs[0][1].name, "extra")
+
+ eq_(diffs[1][0], "add_column")
+ eq_(diffs[1][1], None)
+ eq_(diffs[1][2], "order")
+ eq_(diffs[1][3], metadata.tables['order'].c.user_id)
+
+ def test_compare_metadata_include_symbol(self):
+ metadata = self.m2
+
+ def include_symbol(table_name, schema_name):
+ return table_name in ('extra', 'order')
+
+ context = MigrationContext.configure(
+ connection=self.bind.connect(),
+ opts={
+ 'compare_type': True,
+ 'compare_server_default': True,
+ 'include_symbol': include_symbol,
+ }
+ )
+
+ diffs = autogenerate.compare_metadata(context, metadata)
+
+ eq_(diffs[0][0], 'remove_table')
+ eq_(diffs[0][1].name, "extra")
+
+ eq_(diffs[1][0], "add_column")
+ eq_(diffs[1][1], None)
+ eq_(diffs[1][2], "order")
+ eq_(diffs[1][3], metadata.tables['order'].c.user_id)
+
+ eq_(diffs[2][0][0], "modify_type")
+ eq_(diffs[2][0][1], None)
+ eq_(diffs[2][0][2], "order")
+ eq_(diffs[2][0][3], "amount")
+ eq_(repr(diffs[2][0][5]), "NUMERIC(precision=8, scale=2)")
+ eq_(repr(diffs[2][0][6]), "Numeric(precision=10, scale=2)")
+
+ eq_(diffs[2][1][0], 'modify_nullable')
+ eq_(diffs[2][1][2], 'order')
+ eq_(diffs[2][1][5], False)
+ eq_(diffs[2][1][6], True)
+
+class PGCompareMetaData(ModelOne, AutogenTest, TestCase):
+ schema = "test_schema"
+
+ @classmethod
+ def _get_bind(cls):
+ return db_for_dialect('postgresql')
+
+ def test_compare_metadata_schema(self):
+ metadata = self.m2
+
+ context = MigrationContext.configure(
+ connection=self.bind.connect(),
+ opts={
+ "include_schemas": True
+ }
+ )
+
+ diffs = autogenerate.compare_metadata(context, metadata)
+
+ eq_(
+ diffs[0],
+ ('add_table', metadata.tables['test_schema.item'])
+ )
+
+ eq_(diffs[1][0], 'remove_table')
+ eq_(diffs[1][1].name, "extra")
+
+ eq_(diffs[2][0], "add_column")
+ eq_(diffs[2][1], "test_schema")
+ eq_(diffs[2][2], "address")
+ eq_(diffs[2][3], metadata.tables['test_schema.address'].c.street)
+
+ eq_(diffs[3][0], "add_column")
+ eq_(diffs[3][1], "test_schema")
+ eq_(diffs[3][2], "order")
+ eq_(diffs[3][3], metadata.tables['test_schema.order'].c.user_id)
+
+ eq_(diffs[4][0][0], 'modify_nullable')
+ eq_(diffs[4][0][5], False)
+ eq_(diffs[4][0][6], True)
+