From 05a0d457ead5e92cb8fcf8aee1b1f7af68d80cab Mon Sep 17 00:00:00 2001 From: Druppie Agent Date: Thu, 11 Jun 2026 11:42:54 +0000 Subject: [PATCH] Add vergunningzoeker tests (Red phase) --- tests/conftest.py | 15 +++++++++++++++ tests/test_routes.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 tests/conftest.py create mode 100644 tests/test_routes.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..603ea99 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,15 @@ +import os +os.environ["DATABASE_URL"] = "sqlite:///test.db" + +import pytest +from app import create_app +from app.database import Base, engine + +@pytest.fixture +def client(): + app = create_app() + app.config["TESTING"] = True + Base.metadata.create_all(bind=engine) + with app.test_client() as client: + yield client + Base.metadata.drop_all(bind=engine) diff --git a/tests/test_routes.py b/tests/test_routes.py new file mode 100644 index 0000000..6431ac3 --- /dev/null +++ b/tests/test_routes.py @@ -0,0 +1,32 @@ +import io +import pytest +from unittest.mock import patch + +def test_upload_permit(client): + """File upload should trigger OCR + classification via SDK.""" + with patch("app.routes.druppie") as mock_druppie: + mock_druppie.call.side_effect = [ + {"text": "Vergunning K-2019-0042. Aanvrager: J. de Vries. Lozing oppervlaktewater."}, + {"answer": "watervergunning_lozing"}, + ] + data = { + "file": (io.BytesIO(b"fake image data"), "scan.jpg"), + "permit_number": "K-2019-0042", + "applicant_name": "J. de Vries", + } + resp = client.post("/api/permits/upload", + data=data, content_type="multipart/form-data") + assert resp.status_code == 200 + result = resp.get_json() + assert "extracted_text" in result + assert mock_druppie.call.call_count == 2 + +def test_search_permits(client): + """Search should return matching permits.""" + resp = client.get("/api/permits/search?q=test") + assert resp.status_code == 200 + +def test_list_permits(client): + """List should return all permits.""" + resp = client.get("/api/permits") + assert resp.status_code == 200