mirror of
https://github.com/Xevion/contest-assistant.git
synced 2025-12-06 01:14:37 -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
|
.idea
|
||||||
token.dat
|
token.dat
|
||||||
database.db
|
database.db
|
||||||
|
Pipfile.lock
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
|
|||||||
@@ -1,23 +1,25 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import random
|
from itertools import count
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from sqlalchemy.orm import Session, sessionmaker
|
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
|
from main import load_db
|
||||||
|
|
||||||
numbers = count()
|
numbers = count()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope='class')
|
@pytest.fixture(scope='class')
|
||||||
async def SessionClass():
|
def SessionClass():
|
||||||
engine = load_db('sqlite:///')
|
engine = load_db('sqlite:///')
|
||||||
yield sessionmaker(bind=engine)
|
yield sessionmaker(bind=engine)
|
||||||
engine.dispose()
|
engine.dispose()
|
||||||
|
|
||||||
class TestSubmissions:
|
|
||||||
|
class TestDatabase(object):
|
||||||
@pytest.fixture()
|
@pytest.fixture()
|
||||||
async def session(self, SessionClass) -> Session:
|
def session(self, SessionClass) -> Session:
|
||||||
session = SessionClass()
|
session = SessionClass()
|
||||||
yield session
|
yield session
|
||||||
session.commit()
|
session.commit()
|
||||||
@@ -32,40 +34,51 @@ class TestSubmissions:
|
|||||||
session.delete(guild)
|
session.delete(guild)
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.fixture()
|
||||||
async def test_submission_base(self, session) -> None:
|
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))
|
period = Period(id=next(numbers))
|
||||||
session.add(period)
|
session.add(period)
|
||||||
submission = Submission(id=next(numbers), user=next(numbers), timestamp=datetime.datetime.utcnow(), period=period)
|
submission = Submission(id=next(numbers), user=next(numbers), timestamp=datetime.datetime.utcnow(), period=period)
|
||||||
session.add(submission)
|
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()
|
@pytest.fixture()
|
||||||
async def session(self, SessionClass) -> Session:
|
def session(self, SessionClass) -> Session:
|
||||||
session = SessionClass()
|
session = SessionClass()
|
||||||
yield session
|
yield session
|
||||||
session.commit()
|
session.commit()
|
||||||
session.close()
|
session.close()
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
def test_period_base(self, session: SessionClass, period: Period) -> None:
|
||||||
async def test_guild_base(session) -> None:
|
|
||||||
guild = Guild(id=0)
|
|
||||||
session.commit()
|
session.commit()
|
||||||
for guild in session.query(Guild).all():
|
|
||||||
print(guild)
|
|
||||||
pass
|
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
|
|
||||||
|
|||||||
Reference in New Issue
Block a user