deploy ProspectOS workspace final
This commit is contained in:
@@ -17,6 +17,8 @@ class BrowserOnlyAppTests(unittest.TestCase):
|
||||
self.tmp = tempfile.NamedTemporaryFile(delete=False)
|
||||
self.tmp.close()
|
||||
server.DB_PATH = self.tmp.name
|
||||
self.auth_required = server.AUTH_REQUIRED
|
||||
server.AUTH_REQUIRED = False
|
||||
self.scan_patcher = patch("api.server.scan_website", return_value={"website_status": "healthy", "website_http_status": 200, "website_final_url": "", "website_latency_ms": 50, "website_https": 1, "website_title": "", "website_technology": "", "website_has_viewport": 1, "website_tls_expires_at": "", "website_checked_at": server.now(), "website_error": "", "website_emails": [], "email_evidence": []})
|
||||
self.scan_patcher.start()
|
||||
self.http = server.ThreadingHTTPServer(("127.0.0.1", 0), server.Handler)
|
||||
@@ -25,6 +27,7 @@ class BrowserOnlyAppTests(unittest.TestCase):
|
||||
self.conn = HTTPConnection("127.0.0.1", self.http.server_port)
|
||||
|
||||
def tearDown(self):
|
||||
server.AUTH_REQUIRED = self.auth_required
|
||||
self.scan_patcher.stop()
|
||||
self.http.shutdown(); self.http.server_close(); self.thread.join(1)
|
||||
try: os.unlink(self.tmp.name)
|
||||
@@ -294,6 +297,19 @@ class BrowserOnlyAppTests(unittest.TestCase):
|
||||
saved = server.db().execute("SELECT ai_promotion_id FROM prospects WHERE id=1").fetchone()
|
||||
self.assertEqual(saved[0], promotion["id"])
|
||||
|
||||
@patch("api.server.ai_assess_prospect", return_value={"ai_probability": 88, "ai_recommendation": "contact", "ai_reasoning": "Active business with a broken site."})
|
||||
def test_workspace_workflow_and_assessment_history(self, assess):
|
||||
with patch("api.server.google_search", return_value=[{"name": "Acme", "website": "https://acme.co.za", "domain": "acme.co.za"}]):
|
||||
_, run = self.request("POST", "/api/discover", {"category": "plumbers", "keywords": "plumbing", "location": "Cape Town"})
|
||||
self.wait_for_run(run["id"])
|
||||
conn = server.db(); conn.execute("INSERT INTO users(organization_id,email,name,password_hash,role,active,created_at,updated_at) VALUES(?,?,?,?,?,?,?,?)", (1, "reviewer@example.com", "Reviewer", "", "reviewer", 1, server.now(), server.now())); conn.commit(); user_id = conn.execute("SELECT id FROM users WHERE email='reviewer@example.com'").fetchone()[0]; conn.close()
|
||||
status, note = self.request("POST", "/api/prospects/1/notes", {"body": "Call after reviewing the website."}); self.assertEqual(status, 201)
|
||||
status, task = self.request("POST", "/api/prospects/1/tasks", {"title": "Send tailored draft", "due_at": "2030-01-01"}); self.assertEqual(status, 201)
|
||||
status, assigned = self.request("POST", "/api/prospects/1/assignment", {"assigned_user_id": user_id}); self.assertEqual(status, 200); self.assertEqual(assigned["assigned_user_id"], user_id)
|
||||
status, body = self.request("POST", "/api/prospects/1/assess", {}); self.assertEqual(status, 200); self.assertEqual(body["ai_probability"], 88)
|
||||
status, history = self.request("GET", "/api/prospects/1/history"); self.assertEqual(status, 200); self.assertTrue(history["score_history"]); self.assertTrue(history["ai_history"])
|
||||
status, tasks = self.request("GET", "/api/prospects/1/tasks"); self.assertEqual(status, 200); self.assertEqual(tasks["items"][0]["title"], "Send tailored draft")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user