"""Test track.""" from sqlalchemy import func, select from video.connectors import mysql from video.models.sql.classes import track from tests.unit import ar_db_utils @ar_db_utils.test_schema def test_upsert() -> None: """Test upsert.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: track_entry = track.upsert( { "track_id": 44556, "duration_minutes": 5, "duration_seconds": 56, "closed_caption_exists": 0, "closed_caption_reason_id": 1, "product_id": 123, "upc": 123, "volume_number": 1, "track_number": 1, }, session=session, ) assert track_entry["track_id"] == 44556 assert track_entry["duration_minutes"] == 5 assert track_entry["duration_seconds"] == 56 assert track_entry["closed_caption_exists"] == 0 assert track_entry["closed_caption_reason_id"] == 1 assert track_entry["product_id"] == 123 assert track_entry["upc"] == 123 assert track_entry["volume_number"] == 1 assert track_entry["track_number"] == 1 @ar_db_utils.test_schema def test_upsert_updates() -> None: """Test upsert updates.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: track.upsert( { "track_id": 44556, "duration_minutes": 5, "duration_seconds": 56, "closed_caption_exists": 0, "closed_caption_reason_id": 1, "product_id": 123, "upc": 123, "volume_number": 1, "track_number": 1, }, session=session, ) track_entry = track.upsert( { "track_id": 44556, "duration_minutes": 6, }, session=session, ) assert track_entry["duration_minutes"] == 6 with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: count = session.execute(select(func.count()).select_from(track.Track)).scalar() assert count == 1 @ar_db_utils.test_schema def test_upsert_updates_field_remained_unchanged() -> None: """Test check field remained unchanged.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: track.upsert( { "track_id": 44556, "duration_minutes": 5, "duration_seconds": 56, "closed_caption_exists": 0, "closed_caption_reason_id": 1, "product_id": 123, "upc": 123, "volume_number": 1, "track_number": 1, }, session=session, ) # Update existing data track_entry_updated = track.upsert( { "track_id": 44556, "duration_minutes": 6, }, session=session, ) assert track_entry_updated["duration_minutes"] == 6 with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: count = session.execute(select(func.count()).select_from(track.Track)).scalar() assert count == 1 # Check the content of the updated record updated_track_entry = session.execute( select(track.Track).where(track.Track.track_id == 44556) ).scalar_one_or_none() assert updated_track_entry is not None assert updated_track_entry.duration_minutes == 6 assert updated_track_entry.duration_seconds == 56 assert updated_track_entry.closed_caption_exists == 0 assert updated_track_entry.closed_caption_reason_id == 1 @ar_db_utils.test_schema def test_get_tracks_by_product_id_success() -> None: """Test get_tracks_by_product_id.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: track.upsert( { "isrc": "123", "track_name": "test", "duration_minutes": "12", "duration_seconds": "2", "explicit": "Y", "offer_type": "all", "p_info": "line", "meta_language_code": None, "closed_caption_exists": True, "closed_caption_reason_id": 1, "preview_start_time": None, "track_type": "music", "upc": "121", "product_id": "123", "track_number": "1531", "stereo_or_mono": "stereo", "volume_number": 1, }, session=session, ) track.upsert( { "isrc": "1234", "track_name": "test1", "duration_minutes": "11", "duration_seconds": "4", "explicit": "Y", "offer_type": "all", "p_info": "line", "meta_language_code": None, "closed_caption_exists": True, "closed_caption_reason_id": 1, "preview_start_time": None, "track_type": "music", "upc": "121", "product_id": "12", "track_number": "1532", "stereo_or_mono": "stereo", "volume_number": 1, }, session=session, ) track_count_with_default_volume_number = track.get_tracks_by_product_id( 123, session=session ) track_count_with_specific_volume_number = track.get_tracks_by_product_id( 12, 1, session=session ) assert len(track_count_with_default_volume_number) == 1 assert len(track_count_with_specific_volume_number) == 1