WIP: I HATE PYTHON
This commit is contained in:
@@ -1,44 +1,55 @@
|
||||
import os
|
||||
import pytest
|
||||
import requests
|
||||
import time
|
||||
import sys
|
||||
from unittest.mock import patch
|
||||
import os
|
||||
|
||||
# Ensure project root is in path
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src")))
|
||||
|
||||
from api_hook_client import ApiHookClient
|
||||
from src.api_hook_client import ApiHookClient
|
||||
|
||||
def test_hooks_enabled_via_cli(mock_app) -> None:
|
||||
with patch.object(sys, 'argv', ['gui_2.py', '--enable-test-hooks']):
|
||||
# We just test the attribute on the mocked app which we re-init
|
||||
mock_app.__init__()
|
||||
assert mock_app.test_hooks_enabled is True
|
||||
def test_hooks_enabled_via_cli(monkeypatch: pytest.MonkeyPatch) -> None:
|
||||
from src.gui_2 import App
|
||||
from unittest.mock import patch
|
||||
monkeypatch.setattr("sys.argv", ["sloppy.py", "--enable-test-hooks"])
|
||||
with patch('src.models.load_config', return_value={}), \
|
||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||
patch('src.session_logger.open_session'), \
|
||||
patch('src.app_controller.AppController._prune_old_logs'), \
|
||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||
app = App()
|
||||
assert app.controller.test_hooks_enabled is True
|
||||
|
||||
def test_hooks_disabled_by_default(mock_app) -> None:
|
||||
with patch.object(sys, 'argv', ['gui_2.py']):
|
||||
if 'SLOP_TEST_HOOKS' in os.environ:
|
||||
del os.environ['SLOP_TEST_HOOKS']
|
||||
mock_app.__init__()
|
||||
assert getattr(mock_app, 'test_hooks_enabled', False) is False
|
||||
def test_hooks_disabled_by_default() -> None:
|
||||
from src.gui_2 import App
|
||||
from unittest.mock import patch
|
||||
with patch('src.models.load_config', return_value={}), \
|
||||
patch('src.performance_monitor.PerformanceMonitor'), \
|
||||
patch('src.session_logger.open_session'), \
|
||||
patch('src.app_controller.AppController._prune_old_logs'), \
|
||||
patch('src.app_controller.AppController._init_ai_and_hooks'):
|
||||
app = App()
|
||||
assert app.controller.test_hooks_enabled is False
|
||||
|
||||
def test_live_hook_server_responses(live_gui) -> None:
|
||||
"""
|
||||
Verifies the live hook server (started via fixture) responds correctly to all major endpoints.
|
||||
"""
|
||||
"""Verifies the live hook server (started via fixture) responds correctly to all major endpoints."""
|
||||
client = ApiHookClient()
|
||||
# Test /status
|
||||
assert client.wait_for_server(timeout=10)
|
||||
|
||||
# 1. Status
|
||||
status = client.get_status()
|
||||
assert status == {'status': 'ok'}
|
||||
# Test /api/project
|
||||
project = client.get_project()
|
||||
assert 'project' in project
|
||||
# Test /api/session
|
||||
session = client.get_session()
|
||||
assert 'session' in session
|
||||
# Test /api/performance
|
||||
perf = client.get_performance()
|
||||
assert 'performance' in perf
|
||||
# Test POST /api/gui
|
||||
gui_data = {"action": "test_action", "value": 42}
|
||||
resp = client.post_gui(gui_data)
|
||||
assert resp == {'status': 'queued'}
|
||||
assert "status" in status
|
||||
assert status["status"] == "idle" or status["status"] == "done"
|
||||
|
||||
# 2. Project
|
||||
proj = client.get_project()
|
||||
assert "project" in proj
|
||||
|
||||
# 3. GUI State
|
||||
state = client.get_gui_state()
|
||||
assert "current_provider" in state
|
||||
|
||||
# 4. Performance
|
||||
perf = client.get_gui_diagnostics()
|
||||
assert "fps" in perf
|
||||
|
||||
Reference in New Issue
Block a user