Skip to content

Commit 5165935

Browse files
committed
update tests for Meeting model
1 parent df456e5 commit 5165935

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

tests/test_meetings.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
from pathlib import Path
1010
import pytest
1111
from unittest.mock import patch, MagicMock, AsyncMock
12-
12+
from typing import List
1313
import sys
14+
from datetime import datetime
1415

1516
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
1617

@@ -99,33 +100,39 @@ async def test_parse_meetings(sample_html):
99100

100101
assert len(meetings) == 2
101102

102-
assert meetings[0]["meeting"] == "Regular Council Meeting"
103-
assert meetings[0]["date"] == "April 2, 2025"
104-
assert meetings[0]["duration"] == "1:29"
105-
assert "AgendaViewer.php?view_id=4&clip_id=6515" in meetings[0]["agenda"]
106-
assert "MediaPlayer.php?view_id=4&clip_id=6515" in meetings[0]["video"]
103+
mtg_one = meetings[0]
104+
105+
assert mtg_one.meeting == "Regular Council Meeting"
106+
assert mtg_one.date == datetime(2025, 4, 2, 17, 3)
107+
assert mtg_one.duration == "1:29"
108+
assert "AgendaViewer.php?view_id=4&clip_id=6515" in mtg_one.agenda.encoded_string()
109+
assert "MediaPlayer.php?view_id=4&clip_id=6515" in mtg_one.video.encoded_string()
110+
111+
mtg_two = meetings[1]
107112

108-
assert meetings[1]["meeting"] == "Animal Welfare Commission"
109-
assert meetings[1]["date"] == "March 10, 2025"
110-
assert meetings[1]["duration"] == "0:38"
111-
assert meetings[1]["agenda"] is None
112-
assert "MediaPlayer.php?view_id=4&clip_id=6474" in meetings[1]["video"]
113+
assert mtg_two.meeting == "Animal Welfare Commission"
114+
assert mtg_two.date == datetime(2025, 3, 10, 18, 0)
115+
assert mtg_two.duration == "0:38"
116+
assert mtg_two.agenda is None
117+
assert "MediaPlayer.php?view_id=4&clip_id=6474" in mtg_two.video.encoded_string()
113118

114119

115120
@pytest.mark.asyncio
116121
async def test_parse_real_html(real_html):
117122
"""Test that meetings are correctly parsed from real HTML"""
118-
meetings = await parse_meetings(real_html)
123+
meetings: List[Meeting] = await parse_meetings(real_html)
119124

120125
# Basic validation
121126
assert isinstance(meetings, list)
122127
assert len(meetings) > 0
123128

124129
# Check that each meeting has the expected fields
130+
# this is now overkill since pydantic handles this
125131
for meeting in meetings:
126-
assert "meeting" in meeting
127-
assert "date" in meeting
128-
assert "duration" in meeting
132+
assert isinstance(meeting, Meeting)
133+
assert hasattr(meeting, "meeting")
134+
assert hasattr(meeting, "date")
135+
assert hasattr(meeting, "duration")
129136
# Agenda and video may be None for some meetings
130137

131138

0 commit comments

Comments
 (0)