Files
RTC_BL_PHONE/scripts/test_check_web_route_parity.py
T
2026-02-21 00:23:17 +01:00

58 lines
1.9 KiB
Python

#!/usr/bin/env python3
"""Unit tests for check_web_route_parity parser helpers."""
from __future__ import annotations
import unittest
from scripts.check_web_route_parity import parse_frontend_routes
class ParseFrontendRoutesTest(unittest.TestCase):
def test_detects_direct_calls(self) -> None:
source = """
async function refresh() {
await requestJson("/api/status");
await requestJson("/api/control", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ action: "CALL" }),
});
}
"""
routes = parse_frontend_routes(source)
self.assertIn(("GET", "/api/status"), routes)
self.assertIn(("POST", "/api/control"), routes)
def test_detects_calls_inside_promise_all(self) -> None:
source = """
const [wifi, mqtt, espnow, peers] = await Promise.all([
requestJson("/api/network/wifi"),
requestJson("/api/network/mqtt"),
requestJson("/api/network/espnow"),
requestJson("/api/network/espnow/peer"),
]);
"""
routes = parse_frontend_routes(source)
self.assertIn(("GET", "/api/network/wifi"), routes)
self.assertIn(("GET", "/api/network/mqtt"), routes)
self.assertIn(("GET", "/api/network/espnow"), routes)
self.assertIn(("GET", "/api/network/espnow/peer"), routes)
def test_handles_nested_parentheses_in_payload(self) -> None:
source = """
await requestJson("/api/network/mqtt/publish", {
method: "POST",
body: JSON.stringify({
topic: "rtc/test",
payload: JSON.stringify({ ping: true }),
}),
});
"""
routes = parse_frontend_routes(source)
self.assertIn(("POST", "/api/network/mqtt/publish"), routes)
if __name__ == "__main__":
unittest.main()