mirror of
https://github.com/Xevion/contest-assistant.git
synced 2025-12-05 23:14:35 -06:00
fix poor test formatting, use inheritted TestDatabase class instead for generating guild/period/submission on the fly (working basic tests), update .gitignore for Pipenv lockfile
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,6 +2,7 @@
|
||||
.idea
|
||||
token.dat
|
||||
database.db
|
||||
Pipfile.lock
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
|
||||
@@ -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.fixture()
|
||||
async 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)
|
||||
session.commit()
|
||||
@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
|
||||
|
||||
class TestPeriods:
|
||||
|
||||
@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_period_base(session) -> None:
|
||||
period = Period(id=1, guild_id=1)
|
||||
def test_period_base(self, session: SessionClass, period: Period) -> None:
|
||||
session.commit()
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user