replace ProspectOS with BrowserOnly build

This commit is contained in:
Marco0300
2026-09-05 14:05:33 +02:00
parent f5b6f6c739
commit d68355f626
118 changed files with 405 additions and 12569 deletions
+49
View File
@@ -0,0 +1,49 @@
import json
import os
import tempfile
import threading
import unittest
from http.client import HTTPConnection
from unittest.mock import patch
from api import server
class BrowserOnlyAppTests(unittest.TestCase):
def setUp(self):
self.tmp = tempfile.NamedTemporaryFile(delete=False)
self.tmp.close()
server.DB_PATH = self.tmp.name
self.http = server.ThreadingHTTPServer(("127.0.0.1", 0), server.Handler)
self.thread = threading.Thread(target=self.http.serve_forever, daemon=True)
self.thread.start()
self.conn = HTTPConnection("127.0.0.1", self.http.server_port)
def tearDown(self):
self.http.shutdown(); self.http.server_close(); self.thread.join(1)
try: os.unlink(self.tmp.name)
except FileNotFoundError: pass
def request(self, method, path, payload=None):
body = json.dumps(payload).encode() if payload is not None else None
self.conn.request(method, path, body, {"Content-Type": "application/json"} if body else {})
response = self.conn.getresponse()
return response.status, json.loads(response.read() or b"{}")
@patch("api.server.google_search", return_value=[{"name": "Acme Plumbing", "website": "https://www.acme.co.za", "domain": "acme.co.za"}, {"name": "Other", "website": "https://other.co.za", "domain": "other.co.za"}])
def test_discovery_filters_catalogued_root_domains(self, search):
status, first = self.request("POST", "/api/discover", {"category": "plumbers", "keywords": "plumbing", "location": "Cape Town", "max_results": 5})
self.assertEqual(status, 201); self.assertEqual(first["added"], 2)
status, second = self.request("POST", "/api/discover", {"category": "plumbers", "keywords": "plumbing", "location": "Cape Town", "max_results": 5})
self.assertEqual(status, 201); self.assertEqual(second["found"], 2); self.assertEqual(second["added"], 0)
self.assertEqual(self.request("GET", "/api/prospects")[1]["total"], 2)
def test_review_updates_only_selected_prospect(self):
with patch("api.server.google_search", return_value=[{"name": "Acme", "website": "https://acme.co.za", "domain": "acme.co.za"}]):
self.request("POST", "/api/discover", {"category": "plumbers", "keywords": "plumbing", "location": "South Africa"})
status, item = self.request("PATCH", "/api/prospects/1/review", {"status": "approved", "notes": "Looks relevant"})
self.assertEqual(status, 200); self.assertEqual(item["review_status"], "approved")
if __name__ == "__main__":
unittest.main()