test_app_module_bootstrap.py
2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from __future__ import annotations
from types import SimpleNamespace
from apps.web_api.bootstrap import app_module
def test_bootstrap_app_module_assembles_runtime_and_registers_routes(monkeypatch):
fake_app = object()
fake_socketio = object()
previous_cleanup_handler = lambda: None
runtime_cleanup_handler = lambda: None
registered_cleanup_handler = lambda: None
route_search_submitter = object()
route_dependencies = object()
socket_event_dependencies = object()
runtime_services = SimpleNamespace(
cleanup_handler=runtime_cleanup_handler,
process_registry=object(),
process_manager=SimpleNamespace(check_app_status=lambda: None),
log_dir="runtime-logs",
analysis_service=SimpleNamespace(
resolve_search_query=lambda **_: ("task-1", "museum"),
dispatch_search_request=lambda **_: {"success": True},
),
search_dispatch_runtime=SimpleNamespace(
resolve_search_query=lambda **_: ("task-1", "museum"),
dispatch_search_request=lambda **_: {"success": True},
),
)
route_registration_calls: list[tuple[object, object]] = []
socket_registration_calls: list[tuple[object, object]] = []
monkeypatch.setattr(app_module, "create_app", lambda: (fake_app, fake_socketio))
monkeypatch.setattr(app_module.runtime_bootstrap, "build_runtime_services", lambda socketio: runtime_services)
monkeypatch.setattr(
app_module,
"register_reload_safe_cleanup_handler",
lambda current_handler, previous_handler: (
registered_cleanup_handler
if current_handler is runtime_cleanup_handler and previous_handler is previous_cleanup_handler
else None
),
)
monkeypatch.setattr(
app_module.runtime_bootstrap,
"build_http_route_search_request_submitter",
lambda **_: route_search_submitter,
)
monkeypatch.setattr(app_module.runtime_bootstrap, "build_http_route_dependencies", lambda **_: route_dependencies)
monkeypatch.setattr(
app_module.runtime_bootstrap,
"build_socket_event_dependencies",
lambda **_: socket_event_dependencies,
)
monkeypatch.setattr(
app_module,
"register_http_routes",
lambda app, deps: route_registration_calls.append((app, deps)),
)
monkeypatch.setattr(
app_module,
"register_socketio_handlers",
lambda socketio, deps: socket_registration_calls.append((socketio, deps)),
)
result = app_module.bootstrap_app_module(
previous_cleanup_handler=previous_cleanup_handler,
)
assert result.app is fake_app
assert result.socketio is fake_socketio
assert result.cleanup_handler is registered_cleanup_handler
assert result.search_hooks is runtime_services.search_dispatch_runtime
assert route_registration_calls == [(fake_app, route_dependencies)]
assert socket_registration_calls == [(fake_socketio, socket_event_dependencies)]