Files
kandev/scripts/architecture_lint_tests/test_frontend_root_state_cast.py
T
2026-08-03 22:40:29 +01:00

77 lines
2.6 KiB
Python

"""Tests for ARCH-FRONTEND-ROOT-STATE-CAST."""
from support import ArchitectureFixture, ROOT_STATE_RULE
class FrontendRootStateCastTest(ArchitectureFixture):
def test_new_unsafe_cast_reports_typed_replacement(self) -> None:
path = "apps/web/lib/state/store.ts"
self.write(path, "const unsafe = state as unknown as RootState;\n")
self.track_all()
result = self.run_cli("--all")
self.assertEqual(result.returncode, 1)
self.assert_diagnostic_location(result, path, 1)
self.assertIn(ROOT_STATE_RULE, result.stdout)
self.assertIn("typed domain state, actions, and defaults", result.stdout)
def test_multiline_double_cast_reports_first_cast_line(self) -> None:
path = "apps/web/lib/state/store.ts"
self.write(path, "const unsafe = (state as unknown)\n as RootState;\n")
self.track_all()
result = self.run_cli("--all")
self.assertEqual(result.returncode, 1)
self.assert_diagnostic_location(result, path, 1)
self.assertIn("as unknown as", result.stdout)
def test_comments_between_cast_tokens_are_detected(self) -> None:
path = "apps/web/lib/state/store.ts"
self.write(
path,
"const unsafe = state as /* explanation */ unknown /* explanation */ as RootState;\n",
)
self.track_all()
result = self.run_cli("--all")
self.assertEqual(result.returncode, 1)
self.assert_diagnostic_location(result, path, 1)
self.assertIn("as unknown as", result.stdout)
def test_template_interpolations_are_scanned_but_template_text_is_ignored(self) -> None:
path = "apps/web/lib/state/store.ts"
self.write(
path,
"const text = `literal state as any ${state as any} ${state as unknown as RootState}`;\n",
)
self.track_all()
result = self.run_cli("--all")
self.assertEqual(result.returncode, 1)
self.assertEqual(result.stdout.count(ROOT_STATE_RULE), 2)
def test_duplicate_violation_lines_get_distinct_occurrences(self) -> None:
path = "apps/web/lib/state/store.ts"
marker = "const unsafe = state as any;"
self.write(path, f"{marker}\n{marker}\n")
self.write_baseline(
root_state=[
{
"escape": "as any",
"marker": marker,
"occurrence": 1,
"path": path,
}
]
)
self.track_all()
result = self.run_cli("--all")
self.assertEqual(result.returncode, 1)
self.assert_diagnostic_location(result, path, 2)