import subprocess from pathlib import Path from void_workers.handlers.image import handle as handle_image FIXTURES = Path(__file__).parent / "fixtures" def _reset_void_schema(conn): conn.execute("DROP SCHEMA IF EXISTS public CASCADE") conn.execute("CREATE SCHEMA public") conn.execute("CREATE EXTENSION IF NOT EXISTS pgcrypto") conn.execute("CREATE EXTENSION IF NOT EXISTS vector") def _run_node_migrations(): subprocess.run( ["node", "lib/db/migrate.js", "up"], cwd="/project/src/void-v2", check=True ) def test_image_ocr(conn): _reset_void_schema(conn) _run_node_migrations() sp = conn.execute( "INSERT INTO spaces(slug, name) VALUES('plan4-img', 'I') RETURNING id" ).fetchone()[0] blob = FIXTURES / "eng_text.png" ref = conn.execute( "INSERT INTO refs(space_id, kind, blob_path) " "VALUES(%s, 'image', %s) RETURNING id", (sp, str(blob)) ).fetchone()[0] out = handle_image({"ref_id": str(ref), "blob_path": str(blob)}) assert out["chars"] > 0 row = conn.execute("SELECT body_text FROM refs WHERE id=%s", (ref,)).fetchone() assert "blackflame" in (row[0] or "").lower()