Skip to content

Commit 06e9bd4

Browse files
committed
test: add tests for enhance schedule method + sample urls_file
1 parent 4996f37 commit 06e9bd4

File tree

3 files changed

+48
-0
lines changed

3 files changed

+48
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ schedule_cache.json
99
pretix_cache.json
1010
*.egg-info/
1111
livestreams.toml
12+
youtube_urls.json

sample_youtube_urls.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"NLGURP": "https://www.youtube.com/watch?v=SXMCMY"
3+
}

tests/program_notifications/test_program_connector.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2943
async 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

Comments
 (0)