Update and add database tests
This commit is contained in:
1 parent
2e1fc2e9bf
commit
7e234745c7
1 file changed
+31
-8
+31
-8
@@ -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
|
||||||
Reference in new issue
Block a user