134 lines
4.1 KiB
Python
134 lines
4.1 KiB
Python
|
|
"""
|
||
|
|
Shared fixtures and configuration for tests
|
||
|
|
"""
|
||
|
|
import pytest
|
||
|
|
import os
|
||
|
|
from unittest.mock import Mock, MagicMock
|
||
|
|
from dotenv import load_dotenv
|
||
|
|
|
||
|
|
load_dotenv()
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def mock_anthropic_api_key():
|
||
|
|
"""Mock Anthropic API key for testing"""
|
||
|
|
return "test-api-key-12345"
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def sample_transcription_dict():
|
||
|
|
"""Sample transcription dictionary for testing"""
|
||
|
|
return {
|
||
|
|
"sentences": [
|
||
|
|
{
|
||
|
|
"text": "Hello, welcome to the meeting.",
|
||
|
|
"start": 0.5,
|
||
|
|
"end": 3.2,
|
||
|
|
"speaker": "Speaker_A",
|
||
|
|
"words": [
|
||
|
|
{"word": "Hello", "start": 0.5, "end": 0.8},
|
||
|
|
{"word": "welcome", "start": 0.9, "end": 1.3},
|
||
|
|
{"word": "to", "start": 1.4, "end": 1.5},
|
||
|
|
{"word": "the", "start": 1.6, "end": 1.7},
|
||
|
|
{"word": "meeting", "start": 1.8, "end": 2.3}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"text": "Let's discuss the project timeline.",
|
||
|
|
"start": 4.0,
|
||
|
|
"end": 7.5,
|
||
|
|
"speaker": "Speaker_B",
|
||
|
|
"words": [
|
||
|
|
{"word": "Let's", "start": 4.0, "end": 4.3},
|
||
|
|
{"word": "discuss", "start": 4.4, "end": 5.0},
|
||
|
|
{"word": "the", "start": 5.1, "end": 5.2},
|
||
|
|
{"word": "project", "start": 5.3, "end": 5.8},
|
||
|
|
{"word": "timeline", "start": 5.9, "end": 6.5}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def sample_basic_summary_response():
|
||
|
|
"""Sample basic summary response (freemium plan)"""
|
||
|
|
return {
|
||
|
|
"Key_Points": [
|
||
|
|
{"text": "Team discussed project timeline.", "timestamp": 4.0},
|
||
|
|
{"text": "Meeting started with introductions.", "timestamp": 0.5}
|
||
|
|
],
|
||
|
|
"Summary": {
|
||
|
|
"text": "Brief meeting to discuss project timeline and introductions.",
|
||
|
|
"duration_minutes": 7.5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def sample_advanced_summary_response():
|
||
|
|
"""Sample advanced summary response (pro plan)"""
|
||
|
|
return {
|
||
|
|
"Purpose": {
|
||
|
|
"text": "Discuss project timeline and team introductions."
|
||
|
|
},
|
||
|
|
"Chapters": {
|
||
|
|
"minutes_total": 0.125,
|
||
|
|
"content": [
|
||
|
|
{
|
||
|
|
"chapter": "Introduction",
|
||
|
|
"time_stamp": {"start": 0.5, "end": 3.2},
|
||
|
|
"content": [
|
||
|
|
{
|
||
|
|
"text": "- Welcome to the meeting.",
|
||
|
|
"original_transcript_start": 0.5,
|
||
|
|
"original_transcript_end": 3.2
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"words_time_stamp": [
|
||
|
|
{"word": "Introduction", "timestamp": 0.5}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"Outcomes": {
|
||
|
|
"minutes_total": 0.125,
|
||
|
|
"content": [
|
||
|
|
{
|
||
|
|
"text": "Project timeline discussed.",
|
||
|
|
"time_stamp": {"start": 4.0, "end": 7.5},
|
||
|
|
"words_time_stamp": [
|
||
|
|
{"word": "Project", "timestamp": 4.0},
|
||
|
|
{"word": "timeline", "timestamp": 4.0}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"Action_Items_Per_User": [
|
||
|
|
{
|
||
|
|
"speaker": "Speaker_B",
|
||
|
|
"minutes_total": 0.125,
|
||
|
|
"action_items": [
|
||
|
|
{
|
||
|
|
"text": "Review project timeline.",
|
||
|
|
"time_stamp": {"start": 4.0, "end": 7.5},
|
||
|
|
"words_time_stamp": [
|
||
|
|
{"word": "Review", "timestamp": 4.0}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
@pytest.fixture
|
||
|
|
def sample_template():
|
||
|
|
"""Sample custom template"""
|
||
|
|
return {
|
||
|
|
"Key_Points": "Summarize the most critical discussion points from the meeting.",
|
||
|
|
"Summary": "Provide a brief overall summary of what was discussed.",
|
||
|
|
"Next_Steps": "List the next steps decided during the meeting."
|
||
|
|
}
|
||
|
|
|