MCPcopy
hub / github.com/pallets-eco/flask-sqlalchemy / test_get_bind_inheritance

Function test_get_bind_inheritance

tests/test_session.py:86–142  ·  view source on GitHub ↗
(app: Flask, model_class: t.Any)

Source from the content-addressed store, hash-verified

84
85@pytest.mark.usefixtures("app_ctx")
86def test_get_bind_inheritance(app: Flask, model_class: t.Any) -> None:
87 app.config["SQLALCHEMY_BINDS"] = {"a": "sqlite://"}
88 db = SQLAlchemy(app, model_class=model_class)
89
90 if issubclass(db.Model, (sa_orm.MappedAsDataclass)):
91
92 class User(db.Model):
93 __bind_key__ = "a"
94 id: sa_orm.Mapped[int] = sa_orm.mapped_column(
95 sa.Integer, primary_key=True, init=False
96 )
97 type: sa_orm.Mapped[str] = sa_orm.mapped_column(
98 sa.String, nullable=False, init=False
99 )
100 __mapper_args__ = {"polymorphic_on": type, "polymorphic_identity": "user"}
101
102 class Admin(User):
103 id: sa_orm.Mapped[int] = sa_orm.mapped_column(
104 sa.ForeignKey(User.id), primary_key=True, init=False
105 )
106 org: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.String, nullable=False)
107 __mapper_args__ = {"polymorphic_identity": "admin"}
108
109 elif issubclass(db.Model, (sa_orm.DeclarativeBase, sa_orm.DeclarativeBaseNoMeta)):
110
111 class User(db.Model): # type: ignore[no-redef]
112 __bind_key__ = "a"
113 id: sa_orm.Mapped[int] = sa_orm.mapped_column(sa.Integer, primary_key=True)
114 type: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.String, nullable=False)
115 __mapper_args__ = {"polymorphic_on": type, "polymorphic_identity": "user"}
116
117 class Admin(User): # type: ignore[no-redef]
118 id: sa_orm.Mapped[int] = sa_orm.mapped_column(
119 sa.ForeignKey(User.id), primary_key=True
120 )
121 org: sa_orm.Mapped[str] = sa_orm.mapped_column(sa.String, nullable=False)
122 __mapper_args__ = {"polymorphic_identity": "admin"}
123
124 else:
125
126 class User(db.Model): # type: ignore[no-redef]
127 __bind_key__ = "a"
128 id = sa.Column(sa.Integer, primary_key=True)
129 type = sa.Column(sa.String, nullable=False)
130 __mapper_args__ = {"polymorphic_on": type, "polymorphic_identity": "user"}
131
132 class Admin(User): # type: ignore[no-redef]
133 id = sa.Column(sa.ForeignKey(User.id), primary_key=True) # type: ignore[assignment]
134 org = sa.Column(sa.String, nullable=False)
135 __mapper_args__ = {"polymorphic_identity": "admin"}
136
137 db.create_all()
138 db.session.add(Admin(org="pallets"))
139 db.session.commit()
140 admin = db.session.execute(db.select(Admin)).scalar_one()
141 db.session.expire(admin)
142 assert admin.org == "pallets"
143

Callers

nothing calls this directly

Calls 3

create_allMethod · 0.95
SQLAlchemyClass · 0.90
AdminClass · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…