tests: Reduce db initialization fixtures to a minimum

This commit is contained in:
Antoine R. Dumont (@ardumont) 2020-10-29 17:37:45 +01:00
parent b35dff1266
commit b90ffa4bdd
No known key found for this signature in database
GPG key ID: 52E2E9840D10C3B8
3 changed files with 14 additions and 34 deletions

View file

@ -6,12 +6,9 @@
import os
import pytest
from pytest_postgresql.janitor import DatabaseJanitor
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from swh.core.db.pytest_plugin import postgresql_fact
from swh.lister.core.models import SQLBase
from swh.lister.debian import debian_init
import swh.scheduler
@ -48,7 +45,7 @@ def lister_debian(swh_lister):
{
"type": "load-deb-package",
"description": "Load a Debian package",
"backend_name": "swh.loader.debian.tasks.LoaderDebianPackage",
"backend_name": "swh.loader.packages.debian.tasks.LoaderDebianPackage",
"default_interval": "1 day",
}
)
@ -57,24 +54,8 @@ def lister_debian(swh_lister):
@pytest.fixture
def sqlalchemy_engine(postgresql_proc):
pg_host = postgresql_proc.host
pg_port = postgresql_proc.port
pg_user = postgresql_proc.user
pg_db = "sqlalchemy-tests"
url = f"postgresql://{pg_user}@{pg_host}:{pg_port}/{pg_db}"
with DatabaseJanitor(pg_user, pg_host, pg_port, pg_db, postgresql_proc.version):
engine = create_engine(url)
yield engine
engine.dispose()
@pytest.fixture
def session(sqlalchemy_engine):
SQLBase.metadata.create_all(sqlalchemy_engine)
Session = sessionmaker(bind=sqlalchemy_engine)
session = Session()
def session(lister_db_url, engine):
session = sessionmaker(bind=engine)()
yield session
session.close()
engine.dispose()

View file

@ -9,14 +9,12 @@ import os
from unittest.mock import patch
import pytest
from sqlalchemy.engine import create_engine
from swh.lister import get_lister
from swh.lister.core.models import initialize
@pytest.fixture
def lister_launchpad(datadir, lister_db_url, swh_scheduler):
def lister_launchpad(datadir, lister_db_url, engine, swh_scheduler):
class Collection:
entries = []
@ -42,11 +40,8 @@ def lister_launchpad(datadir, lister_db_url, swh_scheduler):
with patch("launchpadlib.launchpad.Launchpad.login_anonymously"):
lister = get_lister("launchpad", db_url=lister_db_url)
lister.scheduler = swh_scheduler # inject scheduler fixture
lister.launchpad.git_repositories.getRepositories.side_effect = [
mock_lp_response(i) for i in range(3)
]
initialize(create_engine(lister_db_url), drop_tables=True)
return lister

View file

@ -50,9 +50,13 @@ def swh_config(swh_lister_config, monkeypatch, tmp_path):
@pytest.fixture
def swh_lister(lister_db_url, swh_scheduler, lister_under_test, swh_config):
assert lister_under_test in SUPPORTED_LISTERS
lister = get_lister(lister_under_test, db_url=lister_db_url)
initialize(create_engine(lister_db_url), drop_tables=True)
def engine(lister_db_url):
engine = create_engine(lister_db_url)
initialize(engine, drop_tables=True)
return engine
return lister
@pytest.fixture
def swh_lister(engine, lister_db_url, lister_under_test, swh_config):
assert lister_under_test in SUPPORTED_LISTERS
return get_lister(lister_under_test, db_url=lister_db_url)