Files

53 lines
3.2 KiB
Python
Raw Permalink Normal View History

2026-09-03 11:57:18 +02:00
import sqlite3
try:
from test_api import ApiSmokeTests
except ModuleNotFoundError:
from tests.test_api import ApiSmokeTests
class OperatorWorkflowTests(ApiSmokeTests):
def test_saved_filter_round_trip_update_delete_and_bounds(self):
status, saved = self.request("POST", "/api/v1/saved-filters", {"name": "Hot", "filters": {"score_min": 70, "website_state": "business_site"}})
self.assertEqual(status, 201)
self.assertEqual(saved["filters"]["score_min"], 70)
fid = saved["id"]
status, listing = self.request("GET", "/api/v1/saved-filters")
self.assertEqual(status, 200)
self.assertEqual(listing["items"][0]["name"], "Hot")
self.assertEqual(self.request("PATCH", f"/api/v1/saved-filters/{fid}", {"filters": {"priority": "high"}})[0], 200)
self.assertEqual(self.request("DELETE", f"/api/v1/saved-filters/{fid}")[0], 200)
self.assertEqual(self.request("POST", "/api/v1/saved-filters", {"name": "Bad", "filters": {"x": ["a"] * 51}})[0], 400)
def test_review_queue_filters_flags_suppression_and_bulk_is_atomic(self):
_, first = self.request("POST", "/api/v1/businesses", {"name": "Queue One", "website": "https://queue-one.test", "email": "one@queue.test"})
_, second = self.request("POST", "/api/v1/businesses", {"name": "Queue Two", "website": "https://queue-two.test"})
self.assertEqual(self.request("POST", "/api/v1/suppressions", {"kind": "domain", "value": "queue-one.test"})[0], 201)
status, queue = self.request("GET", "/api/v1/review-queue?review_status=pending&website_state=business_site&page_size=10")
self.assertEqual(status, 200)
flagged = next(x for x in queue["items"] if x["id"] == first["id"])
self.assertTrue(flagged["suppressed"])
self.assertFalse(flagged["outreach_eligible"])
self.assertEqual(self.request("POST", "/api/v1/businesses/bulk-review", {"ids": [first["id"], second["id"]], "action": "verify"})[0], 200)
status, queue = self.request("GET", "/api/v1/review-queue?review_status=verified&page_size=10")
self.assertEqual(status, 200)
self.assertEqual({x["id"] for x in queue["items"]}, {first["id"], second["id"]})
self.assertFalse(next(x for x in queue["items"] if x["id"] == first["id"])["outreach_eligible"])
self.assertEqual(self.request("POST", "/api/v1/businesses/bulk-review", {"ids": [first["id"]] * 101, "action": "reject"})[0], 400)
db = sqlite3.connect(self.db_path)
self.assertEqual(db.execute("SELECT COUNT(*) FROM audit_log WHERE action='businesses.bulk_review'").fetchone()[0], 1)
db.close()
def test_dashboard_operator_counts_and_clickable_metadata(self):
self.request("POST", "/api/v1/businesses", {"name": "Dashboard New", "website": "https://dash.test"})
status, summary = self.request("GET", "/api/v1/dashboard/summary")
self.assertEqual(status, 200)
self.assertEqual(summary["counts"]["new"], 1)
for key in ("new", "hot", "review", "source_health", "active_jobs"):
self.assertIn(key, summary["clickable_filters"])
self.assertEqual(summary["clickable_filters"][key]["count"], summary["counts"][key])
if __name__ == "__main__":
import unittest
unittest.main()