@@ -25,6 +25,20 @@ def cache_file(tmp_path):
2525 return tmp_path / "cache.json"
2626
2727
28+ @pytest .fixture
29+ def mock_youtube_urls_file (tmp_path ):
30+ youtube_mappings = {
31+ "TZWRJN" : "https://www.youtube.com/watch?v=test-announcement" ,
32+ "8FY9BC" : "https://www.youtube.com/watch?v=test-keynote" ,
33+ }
34+ youtube_config_file = tmp_path / "youtube_urls.json"
35+
36+ with Path .open (youtube_config_file , "w" ) as f :
37+ f .write (json .dumps (youtube_mappings ))
38+
39+ return youtube_config_file
40+
41+
2842@pytest .fixture
2943async def program_connector (cache_file ):
3044 return ProgramConnector (api_url = "http://test.api/schedule" , cache_file = cache_file )
@@ -205,3 +219,33 @@ async def test_get_now_without_simulation(program_connector):
205219 await asyncio .sleep (0.001 )
206220
207221 assert datetime .now (tz = UTC ) > now
222+
223+
224+ @pytest .mark .asyncio
225+ async def test_enhance_schedule_with_youtube_urls (
226+ program_connector , mock_schedule , mock_youtube_urls_file
227+ ):
228+ program_connector ._youtube_config_file = mock_youtube_urls_file
229+
230+ # Enhance the schedule
231+ enhanced_schedule = await program_connector ._enhance_schedule_with_youtube_urls (mock_schedule )
232+ sessions_by_day = await program_connector .parse_schedule (enhanced_schedule )
233+
234+ # Check that the YouTube URLs have been added correctly
235+ july_10_sessions = sessions_by_day [date (2024 , 7 , 10 )]
236+ assert july_10_sessions [0 ].youtube_url == "https://www.youtube.com/watch?v=test-announcement"
237+ assert july_10_sessions [1 ].youtube_url is None
238+
239+
240+ @pytest .mark .asyncio
241+ async def test_enhance_schedule_with_youtube_urls_no_config (program_connector , mock_schedule ):
242+ program_connector ._youtube_config_file = Path ("non_existent_file.json" )
243+
244+ # Enhance the schedule
245+ enhanced_schedule = await program_connector ._enhance_schedule_with_youtube_urls (mock_schedule )
246+ sessions_by_day = await program_connector .parse_schedule (enhanced_schedule )
247+
248+ # Check that no YouTube URLs have been added
249+ for day_sessions in sessions_by_day .values ():
250+ for session in day_sessions :
251+ assert session .youtube_url is None
0 commit comments