74 lines
2.5 KiB
Python
74 lines
2.5 KiB
Python
import os
|
|
import sys
|
|
import tempfile
|
|
|
|
_fd, _TMP = tempfile.mkstemp(suffix=".db")
|
|
os.close(_fd)
|
|
os.unlink(_TMP)
|
|
os.environ["AGENT_OFFICE_DB_PATH"] = _TMP
|
|
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
|
|
from unittest.mock import AsyncMock
|
|
|
|
import pytest
|
|
|
|
from app.agents.insta import InstaAgent
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def _init_db():
|
|
import gc
|
|
gc.collect()
|
|
if os.path.exists(_TMP):
|
|
os.remove(_TMP)
|
|
from app.db import init_db
|
|
init_db()
|
|
yield
|
|
gc.collect()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_on_command_collect_trends_dispatches(monkeypatch):
|
|
agent = InstaAgent()
|
|
fake_collect = AsyncMock(return_value={"task_id": "tcollect"})
|
|
fake_status = AsyncMock(return_value={"status": "succeeded", "result_id": 8,
|
|
"message": "naver:5, google:3"})
|
|
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_collect_trends", fake_collect)
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_task_status", fake_status)
|
|
monkeypatch.setattr("app.agents.insta.messaging.send_raw", AsyncMock(return_value={"ok": True}))
|
|
|
|
result = await agent.on_command("collect_trends", {})
|
|
assert result["ok"] is True
|
|
fake_collect.assert_awaited()
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_on_schedule_loads_preferences(monkeypatch):
|
|
"""on_schedule이 preferences를 가져오는지 확인."""
|
|
agent = InstaAgent()
|
|
|
|
fake_collect = AsyncMock(return_value={"task_id": "t1"})
|
|
fake_extract = AsyncMock(return_value={"task_id": "t2"})
|
|
fake_status = AsyncMock(side_effect=[
|
|
{"status": "succeeded", "result_id": 0},
|
|
{"status": "succeeded", "result_id": 0},
|
|
])
|
|
fake_keywords = AsyncMock(return_value=[
|
|
{"id": 1, "keyword": "K", "category": "economy", "score": 0.9},
|
|
])
|
|
fake_prefs = AsyncMock(return_value={"economy": 0.6, "psychology": 0.4})
|
|
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_collect", fake_collect)
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_extract", fake_extract)
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_task_status", fake_status)
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_list_keywords", fake_keywords)
|
|
monkeypatch.setattr("app.agents.insta.service_proxy.insta_get_preferences", fake_prefs)
|
|
monkeypatch.setattr("app.agents.insta.messaging.send_raw", AsyncMock(return_value={"ok": True}))
|
|
|
|
agent.state = "idle"
|
|
await agent.on_schedule()
|
|
|
|
fake_prefs.assert_awaited()
|