"""Tests for data models."""
from datetime import date, datetime
from zoneinfo import ZoneInfo
import pytest
from daily_briefing.models import (
ActionItem,
CalendarEvent,
Conflict,
ConflictType,
DailyBriefing,
EventType,
FreeSlot,
MeetingSummary,
Priority,
TravelInfo,
)
class TestCalendarEvent:
"""Tests for CalendarEvent model."""
def test_create_event(self, tz):
"""Test creating a calendar event."""
start = datetime(2025, 1, 15, 10, 0, tzinfo=tz)
end = datetime(2025, 1, 15, 11, 0, tzinfo=tz)
event = CalendarEvent(
id="test-123",
title="Team Meeting",
start=start,
end=end,
source="Google Calendar",
event_type=EventType.MEETING,
location="Room A",
)
assert event.id == "test-123"
assert event.title == "Team Meeting"
assert event.event_type == EventType.MEETING
assert event.location == "Room A"
class TestConflict:
"""Tests for Conflict model."""
def test_create_conflict(self, tz):
"""Test creating a conflict."""
event1 = CalendarEvent(
id="1",
title="Meeting A",
start=datetime(2025, 1, 15, 10, 0, tzinfo=tz),
end=datetime(2025, 1, 15, 11, 0, tzinfo=tz),
source="Calendar",
)
event2 = CalendarEvent(
id="2",
title="Meeting B",
start=datetime(2025, 1, 15, 10, 30, tzinfo=tz),
end=datetime(2025, 1, 15, 11, 30, tzinfo=tz),
source="Calendar",
)
conflict = Conflict(
conflict_type=ConflictType.OVERLAP,
events=[event1, event2],
description="Meetings overlap",
severity=Priority.HIGH,
)
assert conflict.conflict_type == ConflictType.OVERLAP
assert len(conflict.events) == 2
assert conflict.severity == Priority.HIGH
class TestDailyBriefing:
"""Tests for DailyBriefing model."""
def test_to_dict(self, tz):
"""Test converting briefing to dictionary."""
briefing = DailyBriefing(
date=date(2025, 1, 15),
generated_at=datetime(2025, 1, 15, 8, 0, tzinfo=tz),
total_meetings=3,
total_meeting_hours=2.5,
focus_time_hours=4.0,
)
result = briefing.to_dict()
assert result["date"] == "2025-01-15"
assert result["stats"]["total_meetings"] == 3
assert result["stats"]["total_meeting_hours"] == 2.5
assert result["stats"]["focus_time_hours"] == 4.0
class TestActionItem:
"""Tests for ActionItem model."""
def test_create_action_item(self):
"""Test creating an action item."""
item = ActionItem(
id="action-1",
text="Review PR #123",
source="Fireflies",
meeting_title="Sprint Planning",
priority=Priority.HIGH,
)
assert item.text == "Review PR #123"
assert item.source == "Fireflies"
assert item.priority == Priority.HIGH