Files
MajoorWaldi-ComfyUI-Majoor-…/tests/features/test_search_flow_integration.py
T
MajoorWaldi 4411c72e4e Refactor test imports and clean up unused code across multiple test files
- Removed unnecessary imports from various test files to improve readability and maintainability.
- Added new settings for the Generated Feed display in the settingsFeed.js file.
- Introduced a new configuration file for Pyright type checking.
2026-03-28 13:26:28 +01:00

58 lines
1.9 KiB
Python

from __future__ import annotations
from pathlib import Path
import pytest
from mjr_am_backend import deps
@pytest.mark.asyncio
async def test_search_flow_index_then_search(tmp_path: Path, monkeypatch):
db_path = tmp_path / "idx.sqlite"
root = tmp_path / "assets"
root.mkdir()
file_a = root / "alpha_image.png"
file_b = root / "beta_photo.png"
file_a.write_bytes(b"not-a-real-png")
file_b.write_bytes(b"not-a-real-png")
monkeypatch.setattr(deps, "WATCHER_ENABLED", False)
services_res = await deps.build_services(str(db_path))
assert services_res.ok, services_res.error
services = services_res.data
assert isinstance(services, dict)
index = services["index"]
db = services["db"]
sync_worker = services.get("rating_tags_sync")
try:
idx = await index.index_paths(
paths=[file_a, file_b],
base_dir=str(root),
incremental=False,
source="output",
root_id=None,
)
assert idx.ok, idx.error
out = await index.search("alpha", limit=20, offset=0, filters=None, include_total=True)
assert out.ok, out.error
assets = out.data.get("assets") or []
assert any("alpha_image.png" in str(a.get("filename") or "") for a in assets)
# Scoped path search should include only files under the indexed root.
scoped = await index.search_scoped("*", roots=[str(root)], limit=50, offset=0, filters=None, include_total=True)
assert scoped.ok, scoped.error
scoped_assets = scoped.data.get("assets") or []
names = {str(a.get("filename") or "") for a in scoped_assets}
assert "alpha_image.png" in names
assert "beta_photo.png" in names
finally:
if sync_worker is not None:
try:
sync_worker.stop()
except Exception:
pass
await db.aclose()