SurfSense/surfsense_backend/tests/e2e/fakes/confluence_indexer.py
2026-05-08 01:09:40 +05:30

56 lines
1.6 KiB
Python

"""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)