from datetime import datetime from sqlite3 import IntegrityError from conftest import PowerballDraw def test_create_powerball_draw(db_session) -> None: """add a record""" date = datetime(2010, 2, 3).date() new_record = PowerballDraw(draw_date=date, main_ball1=17, main_ball2=22, main_ball3=36, main_ball4=37, main_ball5=52, powerball=24, power_play=2) db_session.add(new_record) db_session.commit() # verify the record exists record = db_session.query(PowerballDraw).filter_by(draw_date=date).first() assert record is not None assert record == new_record def test_powerball_draw_isolation(db_session) -> None: """query for all records in the database""" draws = db_session.query(PowerballDraw).all() assert len(draws) == 0 def test_powerball_draw_by_date_blank(db_session) -> None: """query for all powerball records with a blank date""" blank_results = db_session.query(PowerballDraw).filter_by(draw_date='').all() assert len(blank_results) == 0 def test_powerball_draw_integrity(db_session) -> None: """ensure that duplicate records cannot be inserted""" date = datetime(2010, 2, 3).date() new_record = PowerballDraw(draw_date=date, main_ball1=17, main_ball2=22, main_ball3=36, main_ball4=37, main_ball5=52, powerball=24, power_play=2) try: # insert a new record db_session.add(new_record) db_session.commit() # try inserting the same record again db_session.add(new_record) db_session.commit() except IntegrityError: assert True def test_powerball_draw_repr_and_str(db_session) -> None: """test the __repr__ and __str__ methods of PowerballDraw""" date = datetime(2010, 2, 3).date() new_record = PowerballDraw(draw_date=date, main_ball1=17, main_ball2=22, main_ball3=36, main_ball4=37, main_ball5=52, powerball=24, power_play=2) # insert a new record db_session.add(new_record) db_session.commit() # query the record record = db_session.query(PowerballDraw).filter_by(draw_date=date).first() # compare the str and repr values of each assert str(record) == str(new_record) assert repr(record) == repr(new_record)