"""Test for FocusTrack Model.""" from datetime import date from datetime import timedelta from backend.connectors import mysql from backend.models.track_query import TrackQuery from tests.testutils import db @db.test_schema_no_seed def test_track_focus_track_model(track_factory): """Test focus_track model.""" start_date = date.today() end_date = start_date + timedelta(days=1) track = track_factory( focus_track=1, focus_track__start_date=start_date, focus_track__end_date=None) db.merge_model_objects([track]) tuid = track.tuid with mysql.db_session() as session: track = TrackQuery.get_by_tuid(tuid, session) assert track.tuid == tuid assert track.focus_track == 'Y' assert track._focus_track.product_id == 1 assert track._focus_track.start_date == start_date assert track._focus_track.end_date is None # Set ownership rights and verify it was updated using a new session track.focus_track_end_date = end_date with mysql.db_session() as session: track = TrackQuery.get_by_tuid(tuid, session) assert track.focus_track == 'Y' assert track._focus_track.end_date == end_date # Set ownership rights and verify it was updated using a new session track.focus_track_end_date = None with mysql.db_session() as session: track = TrackQuery.get_by_tuid(tuid, session) assert track._focus_track.end_date is None @db.test_schema def test_track_focus_track_model_no_row(): """Test populating focus_track works if row doesn't exist. When a track is created, focus_track does not have a row initially associated with the track. We want to make sure the Track model is checking if the row exists before updating/creating it. """ tuid = 3 today = date.today() with mysql.db_session() as session: track = TrackQuery.get_by_tuid(tuid, session) assert track.tuid == tuid assert track._focus_track is None assert track.focus_track == 'N' # Set focus_track and verify row was created using a new session track.focus_track = 'Y' track.focus_track_start_date = today track._focus_track.product_id = track.product_id with mysql.db_session() as session: track = TrackQuery.get_by_tuid(tuid, session) assert track.focus_track == 'Y' assert track._focus_track.tuid == tuid assert track._focus_track.start_date == today assert track._focus_track.product_id == track.product_id