Exemple #1
0
    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)"
Exemple #2
0
    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,))
Exemple #3
0
    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)
Exemple #4
0
    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)
Exemple #5
0
    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)"
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #8
0
    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)
Exemple #9
0
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)