def test_relationship_not_loaded(self, db): Base = declarative_base() class Foo(Base, updated_at=True): __tablename__ = "foo" id = sqlalchemy.Column( sqlalchemy.types.Integer(), primary_key=True, nullable=False, ) class Bar(Base, updated_at=True): __tablename__ = "bar" id = sqlalchemy.Column( sqlalchemy.types.Integer(), primary_key=True, nullable=False, ) foo_id = sqlalchemy.orm.deferred( sqlalchemy.Column(sqlalchemy.types.Integer(), sqlalchemy.ForeignKey("foo.id"), nullable=False)) foo = sqlalchemy.orm.relationship("Foo") Base.metadata.create_all(bind=db.connection()) foo = Foo(id=1) bar = Bar(id=1, foo_id=1) db.add(foo) db.add(bar) db.flush() assert repr(bar) == "Bar(foo_id=<not loaded>, id=1, updated_at=None)"
def test_equals_tuple(self): Base = declarative_base() class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) a = Foo(id=1) assert_equals(a, (1,))
def test_equals_false(self): Base = declarative_base() class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) a = Foo(id=1) b = Foo(id=2) with pytest.raises(AssertionError): assert_equals(a, b)
def test_invalid_exclude(self): Base = declarative_base() class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) a = Foo(id=1) with pytest.raises(ValueError) as e: assert_equals(a, a, exclude=["wat"]) assert "wat" in str(e.value)
def test_updated_at(self): Base = declarative_base() class Foo(Base, updated_at=True): __tablename__ = "foo" id = sqlalchemy.Column( sqlalchemy.types.Integer(), primary_key=True, nullable=False, ) a = Foo(id=1) assert repr(a) == "Foo(id=1, updated_at=None)"
def test_repr_false(self): Base = declarative_base(repr=False) class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column( sqlalchemy.types.Integer(), primary_key=True, nullable=False, ) a = Foo(id=1) assert "Foo object at" in repr(a)
def test_deferred(self): Base = declarative_base() class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) id2 = sqlalchemy.orm.deferred( sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) ) a = Foo(id=1, id2=2) b = Foo(id=1, id2=1) assert_equals(a, b)
def test_assert_equals_factory(self): Base = declarative_base() class Foo(Base): __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) id2 = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True, nullable=False) a = Foo(id=1, id2=2) b = Foo(id=1, id2=1) assert_models_equal1 = assert_equals_factory(include=["id"]) assert_models_equal2 = assert_equals_factory(exclude=["id2"]) assert_models_equal3 = assert_equals_factory(exclude=["id"]) assert_models_equal4 = assert_equals_factory(include=["id2"]) assert_models_equal1(a, b) assert_models_equal2(a, b) with pytest.raises(AssertionError): assert_models_equal3(a, b) assert_models_equal4(a, b)
from strapp.sqlalchemy.model_base import declarative_base from strapp.sqlalchemy.session import create_session, DryRunSession, log_session_state def test_create_session(): session = create_session({"drivername": "sqlite"}) assert isinstance(session, Session) def test_create_session_dry_run(): session = create_session({"drivername": "sqlite"}, dry_run=True) assert isinstance(session, DryRunSession) Base = declarative_base() class Foo(Base): # type: ignore __tablename__ = "foo" id = sqlalchemy.Column(sqlalchemy.types.Integer(), primary_key=True) def test_log_session_state_new(caplog): caplog.set_level("DEBUG") session = create_session({"drivername": "sqlite"}) Base.metadata.create_all(bind=session.connection()) foo_new = Foo(id=1) session.add(foo_new)