Skip to content

Commit 5283379

Browse files
author
IlyaFaer
committed
fix
1 parent b9a6d54 commit 5283379

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

test/test_suite.py

+143
Original file line numberDiff line numberDiff line change
@@ -649,6 +649,149 @@ class UnicodeTextTest(UnicodeFixtureTest, _UnicodeTextTest):
649649

650650

651651
class ComponentReflectionTest(_ComponentReflectionTest):
652+
@classmethod
653+
def define_reflected_tables(cls, metadata, schema):
654+
if schema:
655+
schema_prefix = schema + "."
656+
else:
657+
schema_prefix = ""
658+
659+
if testing.requires.self_referential_foreign_keys.enabled:
660+
users = Table(
661+
"users",
662+
metadata,
663+
Column("user_id", sqlalchemy.INT, primary_key=True),
664+
Column("test1", sqlalchemy.CHAR(5), nullable=False),
665+
Column("test2", sqlalchemy.Float(5), nullable=False),
666+
Column(
667+
"parent_user_id",
668+
sqlalchemy.Integer,
669+
sqlalchemy.ForeignKey(
670+
"%susers.user_id" % schema_prefix, name="user_id_fk"
671+
),
672+
),
673+
schema=schema,
674+
test_needs_fk=True,
675+
)
676+
else:
677+
users = Table(
678+
"users",
679+
metadata,
680+
Column("user_id", sqlalchemy.INT, primary_key=True),
681+
Column("test1", sqlalchemy.CHAR(5), nullable=False),
682+
Column("test2", sqlalchemy.Float(5), nullable=False),
683+
schema=schema,
684+
test_needs_fk=True,
685+
)
686+
687+
Table(
688+
"dingalings",
689+
metadata,
690+
Column("dingaling_id", sqlalchemy.Integer, primary_key=True),
691+
Column(
692+
"address_id",
693+
sqlalchemy.Integer,
694+
sqlalchemy.ForeignKey("%semail_addresses.address_id" % schema_prefix),
695+
),
696+
Column("data", sqlalchemy.String(30)),
697+
schema=schema,
698+
test_needs_fk=True,
699+
)
700+
Table(
701+
"email_addresses",
702+
metadata,
703+
Column("address_id", sqlalchemy.Integer, primary_key=True),
704+
Column(
705+
"remote_user_id",
706+
sqlalchemy.Integer,
707+
sqlalchemy.ForeignKey(users.c.user_id),
708+
),
709+
Column("email_address", sqlalchemy.String(20)),
710+
sqlalchemy.PrimaryKeyConstraint("address_id", name="email_ad_pk"),
711+
schema=schema,
712+
test_needs_fk=True,
713+
)
714+
Table(
715+
"comment_test",
716+
metadata,
717+
Column("id", sqlalchemy.Integer, primary_key=True, comment="id comment"),
718+
Column("data", sqlalchemy.String(20), comment="data % comment"),
719+
Column(
720+
"d2",
721+
sqlalchemy.String(20),
722+
comment=r"""Comment types type speedily ' " \ '' Fun!""",
723+
),
724+
schema=schema,
725+
comment=r"""the test % ' " \ table comment""",
726+
)
727+
728+
if testing.requires.cross_schema_fk_reflection.enabled:
729+
if schema is None:
730+
Table(
731+
"local_table",
732+
metadata,
733+
Column("id", sqlalchemy.Integer, primary_key=True),
734+
Column("data", sqlalchemy.String(20)),
735+
Column(
736+
"remote_id",
737+
ForeignKey("%s.remote_table_2.id" % testing.config.test_schema),
738+
),
739+
test_needs_fk=True,
740+
schema=config.db.dialect.default_schema_name,
741+
)
742+
else:
743+
Table(
744+
"remote_table",
745+
metadata,
746+
Column("id", sqlalchemy.Integer, primary_key=True),
747+
Column(
748+
"local_id",
749+
ForeignKey(
750+
"%s.local_table.id" % config.db.dialect.default_schema_name
751+
),
752+
),
753+
Column("data", sqlalchemy.String(20)),
754+
schema=schema,
755+
test_needs_fk=True,
756+
)
757+
Table(
758+
"remote_table_2",
759+
metadata,
760+
Column("id", sqlalchemy.Integer, primary_key=True),
761+
Column("data", sqlalchemy.String(20)),
762+
schema=schema,
763+
test_needs_fk=True,
764+
)
765+
766+
if testing.requires.index_reflection.enabled:
767+
cls.define_index(metadata, users)
768+
769+
if not schema:
770+
# test_needs_fk is at the moment to force MySQL InnoDB
771+
# noncol_idx_test_nopk = Table(
772+
# "noncol_idx_test_nopk",
773+
# metadata,
774+
# Column("q", sqlalchemy.String(5)),
775+
# test_needs_fk=True,
776+
# )
777+
778+
noncol_idx_test_pk = Table(
779+
"noncol_idx_test_pk",
780+
metadata,
781+
Column("id", sqlalchemy.Integer, primary_key=True),
782+
Column("q", sqlalchemy.String(5)),
783+
test_needs_fk=True,
784+
)
785+
786+
if testing.requires.indexes_with_ascdesc.enabled:
787+
# Index("noncol_idx_nopk", noncol_idx_test_nopk.c.q.desc())
788+
sqlalchemy.Index("noncol_idx_pk", noncol_idx_test_pk.c.q.desc())
789+
790+
if testing.requires.view_column_reflection.enabled:
791+
cls.define_views(metadata, schema)
792+
if not schema and testing.requires.temp_table_reflection.enabled:
793+
cls.define_temp_tables(metadata)
794+
652795
@classmethod
653796
def define_temp_tables(cls, metadata):
654797
"""

0 commit comments

Comments
 (0)