diff --git a/.gitignore b/.gitignore index 970e261..6f12f6d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ .idea token.dat database.db +Pipfile.lock # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/tests/bot/test_db.py b/tests/bot/test_db.py index 613b258..283950e 100644 --- a/tests/bot/test_db.py +++ b/tests/bot/test_db.py @@ -1,23 +1,25 @@ import datetime -import random +from itertools import count import pytest from sqlalchemy.orm import Session, sessionmaker -from itertools import count -from bot.models import Guild, Submission, Period + +from bot.models import Guild, Period, Submission from main import load_db numbers = count() + @pytest.fixture(scope='class') -async def SessionClass(): +def SessionClass(): engine = load_db('sqlite:///') yield sessionmaker(bind=engine) engine.dispose() -class TestSubmissions: + +class TestDatabase(object): @pytest.fixture() - async def session(self, SessionClass) -> Session: + def session(self, SessionClass) -> Session: session = SessionClass() yield session session.commit() @@ -32,40 +34,51 @@ class TestSubmissions: session.delete(guild) session.close() - @pytest.mark.asyncio - async def test_submission_base(self, session) -> None: + @pytest.fixture() + def period(self, session: Session, guild: Guild): + period = Period(id=next(numbers), guild=guild) + session.add(period) + session.commit() + yield period + session.delete(period) + session.close() + + @pytest.fixture() + def submission(self, session: Session, period: Period) -> Submission: + submission = Submission(id=next(numbers), user=next(numbers), timestamp=datetime.datetime.utcnow(), period=period) + session.add(submission) + session.commit() + yield submission + session.delete(submission) + session.close() + + +@pytest.mark.usefixtures("session", "guild", "submission", "period") +class TestSubmissions(TestDatabase): + def test_submission_base(self, session) -> None: period = Period(id=next(numbers)) session.add(period) submission = Submission(id=next(numbers), user=next(numbers), timestamp=datetime.datetime.utcnow(), period=period) session.add(submission) -class TestGuilds: +@pytest.mark.usefixtures("session", "guild", "submission", "period") +class TestGuilds(TestDatabase): + def test_guild_base(self, session: Session, guild: Guild) -> None: + for guild in session.query(Guild).all(): + print(guild) + pass + + +@pytest.mark.usefixtures("session", "guild", "submission", "period") +class TestPeriods(TestDatabase): @pytest.fixture() - async def session(self, SessionClass) -> Session: + def session(self, SessionClass) -> Session: session = SessionClass() yield session session.commit() session.close() - @pytest.mark.asyncio - async def test_guild_base(session) -> None: - guild = Guild(id=0) + def test_period_base(self, session: SessionClass, period: Period) -> None: session.commit() - for guild in session.query(Guild).all(): - print(guild) pass - - class TestPeriods: - @pytest.fixture() - async def session(self, SessionClass) -> Session: - session = SessionClass() - yield session - session.commit() - session.close() - - @pytest.mark.asyncio - async def test_period_base(session) -> None: - period = Period(id=1, guild_id=1) - session.commit() - pass