"""Check test utils functions.""" import factory import sqlalchemy from owsmysql import db from owsmysql.utils import testdb class Model(db.default.BaseModel): """Release Model. Represents Release metadata """ __tablename__ = 'model' pk = sqlalchemy.Column( sqlalchemy.Integer, primary_key=True, autoincrement=True, nullable=False) value = sqlalchemy.Column(sqlalchemy.String(255)) class ModelFactory(factory.Factory): """Factory for test model.""" class Meta: """Meta class around the release model.""" model = Model pk = factory.Sequence(lambda n: n + 1) value = factory.Sequence(lambda n: str(n + 1)) fixture_foo = ModelFactory(value='foo') fixture_bar = ModelFactory(value='bar') fixture_set = (fixture_foo, fixture_bar) @testdb.empty def test_empty_db(): """Check that empty DB created and can be used in test.""" obj = Model(value='bar') with db.default.session() as session: session.add(obj) session.flush() assert obj.pk is not None @testdb.with_fixtures(fixture_foo) def test_fixtures(): """Check fixtures decorator.""" with db.default.session() as session: obj = session.query(Model).get(fixture_foo.pk) assert obj.value == 'foo' @testdb.with_fixtures(fixture_set) def test_fixtures_set(): """Check fixtures decorator with fixture set.""" with db.default.session() as session: obj = session.query(Model).get(fixture_foo.pk) assert obj.value == 'foo' obj = session.query(Model).get(fixture_bar.pk) assert obj.value == 'bar' def test_mock_session(mocker): """Check session mocker.""" mock = testdb.mock_db_session(mocker) with db.default.session() as session: session.query(Model).get(10500) assert mock.query.called