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):
# cf. https://docs.sqlalchemy.org/en
# /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)
import enum
import logging
import sqlalchemy as sa
......@@ -13,15 +12,10 @@ logger = logging.getLogger(__name__)
base_schema: Any = declarative_base()
def _enum_names(enum_class):
return [x.name for x in list(enum_class)]
class BudgetEntry(base_schema):
__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)
budget = sa.Column(sa.String(128), nullable=True)
year = sa.Column(sa.Integer, primary_key=True)
"""Initial DB
Revision ID: cbcd21fcc151
Revises:
Revises:
Create Date: 2023-02-07 15:56:22.086064
"""
......@@ -15,22 +15,24 @@ down_revision = None
branch_labels = 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():
op.execute(sa.schema.CreateSequence(budget_id_seq)) # create the sequence
op.create_table('budgets',
sa.Column('id', sa.Integer, budget_id_seq, nullable=False, server_default=budget_id_seq.next_value()),
sa.Column('nren', sa.String(length=128), nullable=False),
sa.Column('budget', sa.String(length=128), nullable=True),
sa.Column('year', sa.Integer, nullable=False),
sa.PrimaryKeyConstraint('nren', 'year')
op.execute(sa.schema.CreateSequence(budget_id_seq)) # create the sequence
op.create_table(
'budgets',
sa.Column('id', sa.Integer, budget_id_seq, nullable=False,
server_default=budget_id_seq.next_value()),
sa.Column('nren', sa.String(length=128), nullable=False),
sa.Column('budget', sa.String(length=128), nullable=True),
sa.Column('year', sa.Integer, nullable=False),
sa.PrimaryKeyConstraint('nren', 'year')
)
def downgrade():
op.execute(
sa.schema.DropSequence(sa.Sequence('budgetentry_seq_id_seq')))
sa.schema.DropSequence(sa.Sequence('budgetentry_seq_id_seq')))
op.drop_table('budgets')
......@@ -63,19 +63,16 @@ def budget_view() -> Any:
:return:
"""
with survey_db.session_scope() as survey_session, \
db.session_scope() as session:
_entries = session.query(model.BudgetEntry)
inserted = defaultdict(dict)
for entry in _entries:
inserted[entry.nren][entry.year] = entry.budget
data = survey_session.query(survey_model.Nrens)
for nren in data:
for budget in nren.budgets:
......@@ -100,6 +97,7 @@ def budget_view() -> Any:
with db.session_scope() as session:
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)
......@@ -41,5 +41,5 @@ def init_db_model(dsn):
# cf. https://docs.sqlalchemy.org/en
# /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)
import enum
import logging
import sqlalchemy as sa
......@@ -13,10 +12,6 @@ logger = logging.getLogger(__name__)
base_schema: Any = declarative_base()
def _enum_names(enum_class):
return [x.name for x in list(enum_class)]
class Budgets(base_schema):
__tablename__ = 'budgets'
id = sa.Column(sa.Integer, primary_key=True)
......
......@@ -6,6 +6,7 @@ import pytest
import compendium_v2
from compendium_v2 import db
from compendium_v2.db import model
from compendium_v2.survey_db import model as survey_model
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
......@@ -16,9 +17,26 @@ from sqlalchemy.pool import StaticPool
def dummy_config():
yield {
'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
def mocked_db(mocker):
# cf. https://stackoverflow.com/a/33057675
......@@ -59,7 +77,7 @@ def data_config_filename(dummy_config):
@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
with compendium_v2.create_app().test_client() as c:
yield c
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment