Spaces:
Running
Running
| import pytest | |
| class TestEntityViewWiring: | |
| """Verify the entity view now includes all 6 API calls.""" | |
| def test_promise_all_includes_timeline(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "Api.timeline(id)" in app | |
| def test_promise_all_includes_graph_analytics(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "Api.graphAnalytics(id" in app | |
| def test_promise_all_includes_investigate(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "Api.investigate(id)" in app | |
| def test_six_tabs_defined(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| for tab in ["findings", "graph", "timeline", "forensics", "analytics", "evidence"]: | |
| assert "data-tab="" + tab + """ in app, f"Tab {tab} not found" | |
| def test_timeline_tab_content_panel(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "tab-content-timeline" in app | |
| def test_forensics_tab_content_panel(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "tab-content-forensics" in app | |
| def test_analytics_tab_content_panel(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "tab-content-analytics" in app | |
| def test_tab_switch_array_has_six_tabs(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert '"findings","graph","timeline","forensics","analytics","evidence"' in app | |
| class TestForensicsPage: | |
| def test_forensics_view_registered(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "Views.forensics" in app | |
| assert 'Router.register("/forensics"' in app | |
| def test_forensics_view_calls_ghost_api(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "forensicsGhostCompanies" in app | |
| def test_forensics_view_calls_shadow_api(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "forensicsShadowDirectors" in app | |
| def test_forensics_view_calls_circular_api(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "forensicsCircularOwnership" in app | |
| def test_forensics_nav_link_in_html(self): | |
| with open("frontend/index.html", encoding="utf-8") as f: | |
| html = f.read() | |
| assert "/forensics" in html | |
| class TestHomeStats: | |
| def test_home_stats_has_six_entries(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| # The expanded stats array has 6 entries | |
| assert "Relationships" in app | |
| assert "Audit Reports" in app | |
| def test_home_stats_uses_relationship_count(self): | |
| with open("frontend/js/app.js", encoding="utf-8") as f: | |
| app = f.read() | |
| assert "data.relationships" in app | |
| class TestApiJsMethods: | |
| def test_investigate_method_present(self): | |
| with open("frontend/js/api.js", encoding="utf-8") as f: | |
| apijs = f.read() | |
| assert "investigate:" in apijs | |
| def test_all_phase34_methods_present(self): | |
| with open("frontend/js/api.js", encoding="utf-8") as f: | |
| apijs = f.read() | |
| for method in ["forensicsGhostCompanies", "forensicsShadowDirectors", | |
| "forensicsCircularOwnership", "forensicsBenfords", | |
| "selfLearningPatterns", "caseMemoryStats"]: | |
| assert method in apijs, f"Missing: {method}" | |