From b74caf157bee7ca7936f9da0b20b7884d5f51a18 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 8 May 2026 01:09:40 +0530 Subject: [PATCH] test(backend): add Confluence indexing E2E fake --- .../tests/e2e/fakes/confluence_indexer.py | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 surfsense_backend/tests/e2e/fakes/confluence_indexer.py diff --git a/surfsense_backend/tests/e2e/fakes/confluence_indexer.py b/surfsense_backend/tests/e2e/fakes/confluence_indexer.py new file mode 100644 index 000000000..0e2373c80 --- /dev/null +++ b/surfsense_backend/tests/e2e/fakes/confluence_indexer.py @@ -0,0 +1,56 @@ +"""Strict Confluence indexer fake for Playwright E2E.""" + +from __future__ import annotations + +import json +from pathlib import Path +from typing import Any +from unittest.mock import patch + +_FIXTURE_PATH = Path(__file__).parent / "fixtures" / "confluence_pages.json" + + +def _load_fixture() -> dict[str, Any]: + with _FIXTURE_PATH.open() as f: + return json.load(f) + + +_FIXTURE = _load_fixture() + + +class _FakeConfluenceHistoryConnector: + def __init__(self, *, session: Any, connector_id: int, **kwargs: Any): + del session, kwargs + self.connector_id = connector_id + + async def get_pages_by_date_range( + self, + *, + start_date: str, + end_date: str, + include_comments: bool = False, + ) -> tuple[list[dict[str, Any]], None]: + if not start_date or not end_date: + raise ValueError("Confluence indexer fake expected start_date and end_date.") + del include_comments + return _FIXTURE["pages"], None + + async def close(self) -> None: + return None + + def __getattr__(self, name: str) -> Any: + raise NotImplementedError( + "E2E Confluence indexer fake missing surface: " + f"ConfluenceHistoryConnector.{name!r}. " + "Add it to surfsense_backend/tests/e2e/fakes/confluence_indexer.py." + ) + + +def install(active_patches: list[Any]) -> None: + """Patch only the Confluence indexer's bound connector class.""" + p = patch( + "app.tasks.connector_indexers.confluence_indexer.ConfluenceHistoryConnector", + _FakeConfluenceHistoryConnector, + ) + p.start() + active_patches.append(p)