Update and add database tests

This commit is contained in:
chris committed 2026-02-21 13:30:58 -05:00
1 parent 2e1fc2e9bf
commit 7e234745c7
1 file changed
+31 -8
+31 -8
View File
@@ -1,6 +1,7 @@
from datetime import datetime from datetime import datetime
from pytest import fixture from pytest import fixture
from sqlalchemy.exc import IntegrityError
import sqlalchemy.orm import sqlalchemy.orm
import data.database as db import data.database as db
@@ -13,19 +14,41 @@ def db_session() -> db.dal.Session:
def test_base() -> None: def test_base() -> None:
"""Test to ensure db.Base() is a sqlalchemy DeclarativeBase object."""
assert isinstance(db.Base(), sqlalchemy.orm.DeclarativeBase) assert isinstance(db.Base(), sqlalchemy.orm.DeclarativeBase)
def test_powerball_draw_by_date_blank(db_session) -> None: def test_powerball_draw_by_date_blank(db_session) -> None:
session = db_session """
Test that a null record is returned when no date is provided and that no dateless
blank_results = session.query(db.PowerballDraw).filter_by(draw_date='').all() records can exist in the table.
assert blank_results == [] """
with db_session as session:
blank_results = session.query(db.PowerballDraw).filter_by(draw_date='').all()
assert blank_results == []
def test_powerball_draw_by_date(db_session) -> None: def test_powerball_draw_by_date(db_session) -> None:
session = db_session """Test to be sure we can find the first draw in the table by date."""
date = datetime(2010, 2, 3).strftime('%Y-%m-%d') with db_session as session:
date = datetime(2010, 2, 3).date()
draw = db.PowerballDraw(draw_date=date, white_ball1=17, white_ball2=22, white_ball3=36, white_ball4=37,
white_ball5=52, powerball=24, power_play=2)
record = session.query(db.PowerballDraw).filter_by(draw_date=date).first() record = session.query(db.PowerballDraw).filter_by(draw_date=date).first()
assert record.draw_date.strftime('%Y-%m-%d') == date assert record == draw
def test_powerball_draw_integrity(db_session) -> None:
"""Test that a proper error is received when a duplicate value insertion is attempted."""
with db_session as session:
date = datetime.strptime('02/03/2010','%m/%d/%Y').date()
try:
draw = db.PowerballDraw(draw_date=date, white_ball1=17, white_ball2=22, white_ball3=36, white_ball4=37,
white_ball5=52, powerball=24, power_play=2)
session.add(draw)
session.commit()
assert False
except IntegrityError:
assert True