Skip to content
Snippets Groups Projects
Commit c7447a1b authored by Bjarke Madsen's avatar Bjarke Madsen
Browse files

Allow tests to run & fix pep8

parent b4516772
No related branches found
No related tags found
No related merge requests found
...@@ -41,5 +41,5 @@ def init_db_model(dsn): ...@@ -41,5 +41,5 @@ def init_db_model(dsn):
# cf. https://docs.sqlalchemy.org/en # cf. https://docs.sqlalchemy.org/en
# /latest/orm/extensions/automap.html # /latest/orm/extensions/automap.html
engine = create_engine(dsn, pool_size=10, max_overflow=0) engine = create_engine(dsn, pool_size=10)
_SESSION_MAKER = sessionmaker(bind=engine) _SESSION_MAKER = sessionmaker(bind=engine)
import enum
import logging import logging
import sqlalchemy as sa import sqlalchemy as sa
...@@ -13,15 +12,10 @@ logger = logging.getLogger(__name__) ...@@ -13,15 +12,10 @@ logger = logging.getLogger(__name__)
base_schema: Any = declarative_base() base_schema: Any = declarative_base()
def _enum_names(enum_class):
return [x.name for x in list(enum_class)]
class BudgetEntry(base_schema): class BudgetEntry(base_schema):
__tablename__ = 'budgets' __tablename__ = 'budgets'
id = sa.Column(sa.Sequence('budgetentry_seq_id_seq'), nullable=False) id = sa.Column(sa.Integer, sa.Sequence(
'budgetentry_seq_id_seq'), nullable=False)
nren = sa.Column(sa.String(128), primary_key=True) nren = sa.Column(sa.String(128), primary_key=True)
budget = sa.Column(sa.String(128), nullable=True) budget = sa.Column(sa.String(128), nullable=True)
year = sa.Column(sa.Integer, primary_key=True) year = sa.Column(sa.Integer, primary_key=True)
"""Initial DB """Initial DB
Revision ID: cbcd21fcc151 Revision ID: cbcd21fcc151
Revises: Revises:
Create Date: 2023-02-07 15:56:22.086064 Create Date: 2023-02-07 15:56:22.086064
""" """
...@@ -15,22 +15,24 @@ down_revision = None ...@@ -15,22 +15,24 @@ down_revision = None
branch_labels = None branch_labels = None
depends_on = None depends_on = None
budget_id_seq = sa.Sequence('budgetentry_seq_id_seq') # represents the sequence # represents the sequence
budget_id_seq = sa.Sequence('budgetentry_seq_id_seq')
def upgrade(): def upgrade():
op.execute(sa.schema.CreateSequence(budget_id_seq)) # create the sequence op.execute(sa.schema.CreateSequence(budget_id_seq)) # create the sequence
op.create_table('budgets', op.create_table(
sa.Column('id', sa.Integer, budget_id_seq, nullable=False, server_default=budget_id_seq.next_value()), 'budgets',
sa.Column('nren', sa.String(length=128), nullable=False), sa.Column('id', sa.Integer, budget_id_seq, nullable=False,
sa.Column('budget', sa.String(length=128), nullable=True), server_default=budget_id_seq.next_value()),
sa.Column('year', sa.Integer, nullable=False), sa.Column('nren', sa.String(length=128), nullable=False),
sa.PrimaryKeyConstraint('nren', 'year') sa.Column('budget', sa.String(length=128), nullable=True),
sa.Column('year', sa.Integer, nullable=False),
sa.PrimaryKeyConstraint('nren', 'year')
) )
def downgrade(): def downgrade():
op.execute( op.execute(
sa.schema.DropSequence(sa.Sequence('budgetentry_seq_id_seq'))) sa.schema.DropSequence(sa.Sequence('budgetentry_seq_id_seq')))
op.drop_table('budgets') op.drop_table('budgets')
...@@ -63,19 +63,16 @@ def budget_view() -> Any: ...@@ -63,19 +63,16 @@ def budget_view() -> Any:
:return: :return:
""" """
with survey_db.session_scope() as survey_session, \ with survey_db.session_scope() as survey_session, \
db.session_scope() as session: db.session_scope() as session:
_entries = session.query(model.BudgetEntry) _entries = session.query(model.BudgetEntry)
inserted = defaultdict(dict) inserted = defaultdict(dict)
for entry in _entries: for entry in _entries:
inserted[entry.nren][entry.year] = entry.budget inserted[entry.nren][entry.year] = entry.budget
data = survey_session.query(survey_model.Nrens) data = survey_session.query(survey_model.Nrens)
for nren in data: for nren in data:
for budget in nren.budgets: for budget in nren.budgets:
...@@ -100,6 +97,7 @@ def budget_view() -> Any: ...@@ -100,6 +97,7 @@ def budget_view() -> Any:
with db.session_scope() as session: with db.session_scope() as session:
entries = sorted([_extract_data(entry) entries = sorted([_extract_data(entry)
for entry in session.query(model.BudgetEntry)], key=lambda d: (d['BUDGET_YEAR'], d['NREN'])) for entry in session.query(model.BudgetEntry)],
key=lambda d: (d['BUDGET_YEAR'], d['NREN']))
return jsonify(entries) return jsonify(entries)
...@@ -41,5 +41,5 @@ def init_db_model(dsn): ...@@ -41,5 +41,5 @@ def init_db_model(dsn):
# cf. https://docs.sqlalchemy.org/en # cf. https://docs.sqlalchemy.org/en
# /latest/orm/extensions/automap.html # /latest/orm/extensions/automap.html
engine = create_engine(dsn, pool_size=10, max_overflow=0) engine = create_engine(dsn, pool_size=10)
_SESSION_MAKER = sessionmaker(bind=engine) _SESSION_MAKER = sessionmaker(bind=engine)
import enum
import logging import logging
import sqlalchemy as sa import sqlalchemy as sa
...@@ -13,10 +12,6 @@ logger = logging.getLogger(__name__) ...@@ -13,10 +12,6 @@ logger = logging.getLogger(__name__)
base_schema: Any = declarative_base() base_schema: Any = declarative_base()
def _enum_names(enum_class):
return [x.name for x in list(enum_class)]
class Budgets(base_schema): class Budgets(base_schema):
__tablename__ = 'budgets' __tablename__ = 'budgets'
id = sa.Column(sa.Integer, primary_key=True) id = sa.Column(sa.Integer, primary_key=True)
......
...@@ -6,6 +6,7 @@ import pytest ...@@ -6,6 +6,7 @@ import pytest
import compendium_v2 import compendium_v2
from compendium_v2 import db from compendium_v2 import db
from compendium_v2.db import model from compendium_v2.db import model
from compendium_v2.survey_db import model as survey_model
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
...@@ -16,9 +17,26 @@ from sqlalchemy.pool import StaticPool ...@@ -16,9 +17,26 @@ from sqlalchemy.pool import StaticPool
def dummy_config(): def dummy_config():
yield { yield {
'SQLALCHEMY_DATABASE_URI': 'sqlite://', 'SQLALCHEMY_DATABASE_URI': 'sqlite://',
'SURVEY_DATABASE_URI': 'sqlite:///'
} }
@pytest.fixture
def mocked_survey_db(mocker):
engine = create_engine(
'sqlite://',
connect_args={'check_same_thread': False},
poolclass=StaticPool,
echo=False)
survey_model.base_schema.metadata.create_all(engine)
mocker.patch(
'compendium_v2.survey_db._SESSION_MAKER',
sessionmaker(bind=engine))
mocker.patch(
'compendium_v2.survey_db.init_db_model',
lambda dsn: None)
@pytest.fixture @pytest.fixture
def mocked_db(mocker): def mocked_db(mocker):
# cf. https://stackoverflow.com/a/33057675 # cf. https://stackoverflow.com/a/33057675
...@@ -59,7 +77,7 @@ def data_config_filename(dummy_config): ...@@ -59,7 +77,7 @@ def data_config_filename(dummy_config):
@pytest.fixture @pytest.fixture
def client(data_config_filename, mocked_db): def client(data_config_filename, mocked_db, mocked_survey_db):
os.environ['SETTINGS_FILENAME'] = data_config_filename os.environ['SETTINGS_FILENAME'] = data_config_filename
with compendium_v2.create_app().test_client() as c: with compendium_v2.create_app().test_client() as c:
yield c yield c
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment