diff --git a/tests/test_database.py b/tests/test_database.py index 4a7299c..46c3442 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -1,6 +1,7 @@ from datetime import datetime from pytest import fixture +from sqlalchemy.exc import IntegrityError import sqlalchemy.orm import data.database as db @@ -13,19 +14,41 @@ def db_session() -> db.dal.Session: def test_base() -> None: + """Test to ensure db.Base() is a sqlalchemy DeclarativeBase object.""" assert isinstance(db.Base(), sqlalchemy.orm.DeclarativeBase) def test_powerball_draw_by_date_blank(db_session) -> None: - session = db_session - - blank_results = session.query(db.PowerballDraw).filter_by(draw_date='').all() - assert blank_results == [] + """ + Test that a null record is returned when no date is provided and that no dateless + records can exist in the table. + """ + 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: - session = db_session - date = datetime(2010, 2, 3).strftime('%Y-%m-%d') + """Test to be sure we can find the first draw in the table by date.""" + 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() - assert record.draw_date.strftime('%Y-%m-%d') == date + record = session.query(db.PowerballDraw).filter_by(draw_date=date).first() + 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