Spaces:
Sleeping
Sleeping
| from unittest.mock import patch, MagicMock | |
| from ingestion.transcript import fetch_transcript, _parse_transcript | |
| def _mock_response(data: dict) -> MagicMock: | |
| m = MagicMock() | |
| m.json.return_value = data | |
| m.raise_for_status = MagicMock() | |
| return m | |
| def test_fetch_transcript_list_format(mock_get, mock_key): | |
| mock_get.return_value = _mock_response({ | |
| "symbol": "AAPL", | |
| "quarter": "2024Q4", | |
| "transcript": [ | |
| {"speaker": "Tim Cook", "title": "CEO", "content": "We had a record quarter."}, | |
| {"speaker": "Luca Maestri", "title": "CFO", "content": "Gross margin was 46.2%."}, | |
| ] | |
| }) | |
| text = fetch_transcript("AAPL", "2024Q4") | |
| assert "Tim Cook" in text | |
| assert "record quarter" in text | |
| assert "Gross margin" in text | |
| def test_fetch_transcript_string_format(mock_get, mock_key): | |
| mock_get.return_value = _mock_response({ | |
| "symbol": "IBM", | |
| "quarter": "2024Q1", | |
| "transcript": "Operator: Good afternoon. CEO: Revenue grew 5%." | |
| }) | |
| text = fetch_transcript("IBM", "2024Q1") | |
| assert "Revenue grew 5%" in text | |
| def test_fetch_transcript_rate_limited_returns_empty(mock_get, mock_key): | |
| mock_get.return_value = _mock_response({ | |
| "Information": "Thank you for using Alpha Vantage! Our standard API rate limit is 25 requests per day." | |
| }) | |
| assert fetch_transcript("AAPL", "2024Q4") == "" | |
| def test_fetch_transcript_http_error_returns_empty(mock_get, mock_key): | |
| mock_get.side_effect = Exception("connection error") | |
| assert fetch_transcript("AAPL", "2024Q4") == "" | |
| def test_parse_transcript_list(): | |
| data = { | |
| "transcript": [ | |
| {"speaker": "CEO", "content": "Hello world"}, | |
| {"speaker": "CFO", "content": "Numbers here"}, | |
| ] | |
| } | |
| result = _parse_transcript(data) | |
| assert "CEO: Hello world" in result | |
| assert "CFO: Numbers here" in result | |
| def test_parse_transcript_string(): | |
| data = {"transcript": "Plain text transcript"} | |
| assert _parse_transcript(data) == "Plain text transcript" | |
| def test_parse_transcript_missing_key(): | |
| assert _parse_transcript({}) == "" | |
| def test_parse_transcript_null_value(): | |
| assert _parse_transcript({"transcript": None}) == "" | |
| def test_fetch_transcript_note_key_returns_empty(mock_get, mock_key): | |
| mock_get.return_value = _mock_response({ | |
| "Note": "Thank you for using Alpha Vantage! This is the standard API note." | |
| }) | |
| assert fetch_transcript("AAPL", "2024Q4") == "" | |