def test_inspect_enums_star(self): enum_type = postgresql.ENUM('cat', 'dog', 'rat', name='pet', metadata=self.metadata) schema_enum_type = postgresql.ENUM('sad', 'ok', 'happy', name='mood', schema='test_schema', metadata=self.metadata) enum_type.create(testing.db) schema_enum_type.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) eq_(inspector.get_enums(), [{ 'visible': True, 'labels': ['cat', 'dog', 'rat'], 'name': 'pet', 'schema': 'public' }]) eq_(inspector.get_enums('*'), [{ 'visible': True, 'labels': ['cat', 'dog', 'rat'], 'name': 'pet', 'schema': 'public' }, { 'visible': False, 'name': 'mood', 'schema': 'test_schema', 'labels': ['sad', 'ok', 'happy'] }])
def test_create_drop_enum(self): # test escaping and unicode within CREATE TYPE for ENUM typ = postgresql.ENUM("val1", "val2", "val's 3", u('méil'), name="myname") self.assert_compile( postgresql.CreateEnumType(typ), u("CREATE TYPE myname AS " "ENUM ('val1', 'val2', 'val''s 3', 'méil')")) typ = postgresql.ENUM("val1", "val2", "val's 3", name="PleaseQuoteMe") self.assert_compile( postgresql.CreateEnumType(typ), "CREATE TYPE \"PleaseQuoteMe\" AS ENUM " "('val1', 'val2', 'val''s 3')")
def test_inspect_enums_star(self): enum_type = postgresql.ENUM("cat", "dog", "rat", name="pet", metadata=self.metadata) schema_enum_type = postgresql.ENUM( "sad", "ok", "happy", name="mood", schema="test_schema", metadata=self.metadata, ) enum_type.create(testing.db) schema_enum_type.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) eq_( inspector.get_enums(), [{ "visible": True, "labels": ["cat", "dog", "rat"], "name": "pet", "schema": "public", }], ) eq_( inspector.get_enums("*"), [ { "visible": True, "labels": ["cat", "dog", "rat"], "name": "pet", "schema": "public", }, { "visible": False, "name": "mood", "schema": "test_schema", "labels": ["sad", "ok", "happy"], }, ], )
def test_inspect_enums_case_sensitive_from_table(self): sa.event.listen( self.metadata, "before_create", sa.DDL('create schema "TestSchema"'), ) sa.event.listen( self.metadata, "after_drop", sa.DDL('drop schema "TestSchema" cascade'), ) counter = itertools.count() for enum in "lower_case", "UpperCase", "Name.With.Dot": for schema in None, "test_schema", "TestSchema": enum_type = postgresql.ENUM( "CapsOne", "CapsTwo", name=enum, metadata=self.metadata, schema=schema, ) Table( "t%d" % next(counter), self.metadata, Column("q", enum_type), ) self.metadata.create_all(testing.db) inspector = inspect(testing.db) counter = itertools.count() for enum in "lower_case", "UpperCase", "Name.With.Dot": for schema in None, "test_schema", "TestSchema": cols = inspector.get_columns("t%d" % next(counter)) cols[0]["type"] = ( cols[0]["type"].schema, cols[0]["type"].name, cols[0]["type"].enums, ) eq_( cols, [ { "name": "q", "type": (schema, enum, ["CapsOne", "CapsTwo"]), "nullable": True, "default": None, "autoincrement": False, "comment": None, } ], )
def test_inspect_enums(self): enum_type = postgresql.ENUM( 'cat', 'dog', 'rat', name='pet', metadata=self.metadata) enum_type.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) eq_(inspector.get_enums(), [ { 'visible': True, 'labels': ['cat', 'dog', 'rat'], 'name': 'pet', 'schema': 'public' }])
def test_inspect_enums_case_sensitive(self): enum_type = postgresql.ENUM('CapsOne', 'CapsTwo', name='UpperCase', metadata=self.metadata) enum_type.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) eq_(inspector.get_enums(), [{ 'visible': True, 'labels': ['CapsOne', 'CapsTwo'], 'name': 'UpperCase', 'schema': 'public' }])
def test_inspect_enums_case_sensitive(self): sa.event.listen( self.metadata, "before_create", sa.DDL('create schema "TestSchema"'), ) sa.event.listen( self.metadata, "after_drop", sa.DDL('drop schema "TestSchema" cascade'), ) for enum in "lower_case", "UpperCase", "Name.With.Dot": for schema in None, "test_schema", "TestSchema": postgresql.ENUM( "CapsOne", "CapsTwo", name=enum, schema=schema, metadata=self.metadata, ) self.metadata.create_all(testing.db) inspector = inspect(testing.db) for schema in None, "test_schema", "TestSchema": eq_( sorted( inspector.get_enums(schema=schema), key=itemgetter("name") ), [ { "visible": schema is None, "labels": ["CapsOne", "CapsTwo"], "name": "Name.With.Dot", "schema": "public" if schema is None else schema, }, { "visible": schema is None, "labels": ["CapsOne", "CapsTwo"], "name": "UpperCase", "schema": "public" if schema is None else schema, }, { "visible": schema is None, "labels": ["CapsOne", "CapsTwo"], "name": "lower_case", "schema": "public" if schema is None else schema, }, ], )
def test_inspect_enums_schema(self): conn = testing.db.connect() enum_type = postgresql.ENUM( 'sad', 'ok', 'happy', name='mood', schema='test_schema', metadata=self.metadata) enum_type.create(conn) inspector = reflection.Inspector.from_engine(conn.engine) eq_( inspector.get_enums('test_schema'), [{ 'visible': False, 'name': 'mood', 'schema': 'test_schema', 'labels': ['sad', 'ok', 'happy'] }])
def test_inspect_enums(self): enum_type = postgresql.ENUM("cat", "dog", "rat", name="pet", metadata=self.metadata) enum_type.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) eq_( inspector.get_enums(), [{ "visible": True, "labels": ["cat", "dog", "rat"], "name": "pet", "schema": "public", }], )
def test_inspect_enums_schema(self): conn = testing.db.connect() enum_type = postgresql.ENUM( "sad", "ok", "happy", name="mood", schema="test_schema", metadata=self.metadata, ) enum_type.create(conn) inspector = reflection.Inspector.from_engine(conn.engine) eq_( inspector.get_enums("test_schema"), [{ "visible": False, "name": "mood", "schema": "test_schema", "labels": ["sad", "ok", "happy"], }], )
def test_inspect_enums_case_sensitive_from_table(self): enum_type = postgresql.ENUM('CapsOne', 'CapsTwo', name='UpperCase', metadata=self.metadata) t = Table('t', self.metadata, Column('q', enum_type)) enum_type.create(testing.db) t.create(testing.db) inspector = reflection.Inspector.from_engine(testing.db) cols = inspector.get_columns("t") cols[0]['type'] = (cols[0]['type'].name, cols[0]['type'].enums) eq_(cols, [{ 'name': 'q', 'type': ('UpperCase', ['CapsOne', 'CapsTwo']), 'nullable': True, 'default': None, 'autoincrement': False, 'comment': None }])
def test_inspect_enums_case_sensitive(self): sa.event.listen(self.metadata, "before_create", sa.DDL('create schema "TestSchema"')) sa.event.listen(self.metadata, "after_drop", sa.DDL('drop schema "TestSchema" cascade')) for enum in 'lower_case', 'UpperCase', 'Name.With.Dot': for schema in None, 'test_schema', 'TestSchema': postgresql.ENUM('CapsOne', 'CapsTwo', name=enum, schema=schema, metadata=self.metadata) self.metadata.create_all(testing.db) inspector = inspect(testing.db) for schema in None, 'test_schema', 'TestSchema': eq_( sorted(inspector.get_enums(schema=schema), key=itemgetter("name")), [{ 'visible': schema is None, 'labels': ['CapsOne', 'CapsTwo'], 'name': "Name.With.Dot", 'schema': 'public' if schema is None else schema }, { 'visible': schema is None, 'labels': ['CapsOne', 'CapsTwo'], 'name': "UpperCase", 'schema': 'public' if schema is None else schema }, { 'visible': schema is None, 'labels': ['CapsOne', 'CapsTwo'], 'name': "lower_case", 'schema': 'public' if schema is None else schema }])
def test_inspect_enums_case_sensitive_from_table(self): sa.event.listen(self.metadata, "before_create", sa.DDL('create schema "TestSchema"')) sa.event.listen(self.metadata, "after_drop", sa.DDL('drop schema "TestSchema" cascade')) counter = itertools.count() for enum in 'lower_case', 'UpperCase', 'Name.With.Dot': for schema in None, 'test_schema', 'TestSchema': enum_type = postgresql.ENUM('CapsOne', 'CapsTwo', name=enum, metadata=self.metadata, schema=schema) Table('t%d' % next(counter), self.metadata, Column('q', enum_type)) self.metadata.create_all(testing.db) inspector = inspect(testing.db) counter = itertools.count() for enum in 'lower_case', 'UpperCase', 'Name.With.Dot': for schema in None, 'test_schema', 'TestSchema': cols = inspector.get_columns("t%d" % next(counter)) cols[0]['type'] = (cols[0]['type'].schema, cols[0]['type'].name, cols[0]['type'].enums) eq_(cols, [{ 'name': 'q', 'type': (schema, enum, ['CapsOne', 'CapsTwo']), 'nullable': True, 'default': None, 'autoincrement': False, 'comment': None }])