Initial commit with translated description
This commit is contained in:
101
tests/test_briefing.py
Normal file
101
tests/test_briefing.py
Normal file
@@ -0,0 +1,101 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
import json
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch
|
||||
import subprocess
|
||||
|
||||
# Add scripts to path
|
||||
sys.path.insert(0, str(Path(__file__).parent.parent / "scripts"))
|
||||
|
||||
from briefing import generate_and_send
|
||||
|
||||
def test_generate_and_send_success():
|
||||
# Mock subprocess.run for summarize.py
|
||||
mock_briefing_data = {
|
||||
"macro_message": "Macro Summary",
|
||||
"portfolio_message": "Portfolio Summary",
|
||||
"summary": "Full Summary"
|
||||
}
|
||||
|
||||
with patch("briefing.subprocess.run") as mock_run:
|
||||
mock_result = Mock()
|
||||
mock_result.returncode = 0
|
||||
mock_result.stdout = json.dumps(mock_briefing_data)
|
||||
mock_run.return_value = mock_result
|
||||
|
||||
args = Mock()
|
||||
args.time = "morning"
|
||||
args.style = "briefing"
|
||||
args.lang = "en"
|
||||
args.deadline = 300
|
||||
args.fast = False
|
||||
args.llm = False
|
||||
args.debug = False
|
||||
args.json = True
|
||||
args.send = False
|
||||
|
||||
result = generate_and_send(args)
|
||||
|
||||
assert result == "Macro Summary"
|
||||
assert mock_run.called
|
||||
# Check if summarize.py was called with correct args
|
||||
call_args = mock_run.call_args[0][0]
|
||||
assert "summarize.py" in str(call_args[1])
|
||||
assert "--time" in call_args
|
||||
assert "morning" in call_args
|
||||
|
||||
def test_generate_and_send_with_whatsapp():
|
||||
mock_briefing_data = {
|
||||
"macro_message": "Macro Summary",
|
||||
"portfolio_message": "Portfolio Summary"
|
||||
}
|
||||
|
||||
with patch("briefing.subprocess.run") as mock_run, \
|
||||
patch("briefing.send_to_whatsapp") as mock_send:
|
||||
|
||||
# First call is summarize.py
|
||||
mock_result = Mock()
|
||||
mock_result.returncode = 0
|
||||
mock_result.stdout = json.dumps(mock_briefing_data)
|
||||
mock_run.return_value = mock_result
|
||||
|
||||
args = Mock()
|
||||
args.time = "evening"
|
||||
args.style = "briefing"
|
||||
args.lang = "en"
|
||||
args.deadline = None
|
||||
args.fast = True
|
||||
args.llm = False
|
||||
args.json = False
|
||||
args.send = True
|
||||
args.group = "Test Group"
|
||||
args.debug = False
|
||||
|
||||
generate_and_send(args)
|
||||
|
||||
# Check if send_to_whatsapp was called for both messages
|
||||
assert mock_send.call_count == 2
|
||||
mock_send.assert_any_call("Macro Summary", "Test Group")
|
||||
mock_send.assert_any_call("Portfolio Summary", "Test Group")
|
||||
|
||||
def test_generate_and_send_failure():
|
||||
with patch("briefing.subprocess.run") as mock_run:
|
||||
mock_result = Mock()
|
||||
mock_result.returncode = 1
|
||||
mock_result.stderr = "Error occurred"
|
||||
mock_run.return_value = mock_result
|
||||
|
||||
args = Mock()
|
||||
args.time = "morning"
|
||||
args.style = "briefing"
|
||||
args.lang = "en"
|
||||
args.deadline = None
|
||||
args.fast = False
|
||||
args.llm = False
|
||||
args.json = False
|
||||
args.send = False
|
||||
args.debug = False
|
||||
|
||||
with pytest.raises(SystemExit):
|
||||
generate_and_send(args)
|
||||
Reference in New Issue
Block a user