Files
CIAgent/apps/api/tests/collectors/test_fixture_collectors.py
saksham 1a4c80958f Initial commit: CI Agent competitive-intelligence monitoring app
FastAPI + Celery + Next.js + Postgres/Redis app with company monitoring,
source collection, LLM-based change analysis, enrichment, and account
security (Turnstile, escalating lockout, email verification).
2026-08-05 10:48:20 -04:00

76 lines
2.6 KiB
Python

"""Patent/review collectors: documented fixture adapters that must never
fabricate data when no provider or fixture is configured."""
from __future__ import annotations
import pytest
from app.collectors.base import CompanyContext, SourceConfig
from app.collectors.patents import PatentSourceCollector
from app.collectors.reviews import ReviewSourceCollector
from app.models.enums import SourceStatus, SourceType
COMPANY = CompanyContext(
id="c1", name="Acme Mobility Systems", official_website=None, monitoring_focus=None
)
@pytest.mark.asyncio
async def test_patent_collector_disabled_without_fixture_key():
source = SourceConfig(id="s1", source_type=SourceType.PATENT, name="Patents", base_url=None)
result = await PatentSourceCollector().collect(source, COMPANY)
assert result.status == SourceStatus.DISABLED
assert result.documents == []
assert "does not fabricate" in result.error
@pytest.mark.asyncio
async def test_patent_collector_disabled_for_unknown_fixture_key():
source = SourceConfig(
id="s1",
source_type=SourceType.PATENT,
name="Patents",
base_url=None,
configuration_metadata={"fixture_key": "does_not_exist"},
)
result = await PatentSourceCollector().collect(source, COMPANY)
assert result.status == SourceStatus.DISABLED
@pytest.mark.asyncio
async def test_patent_collector_loads_fixture_when_configured():
source = SourceConfig(
id="s1",
source_type=SourceType.PATENT,
name="Patents",
base_url=None,
configuration_metadata={"fixture_key": "acme_mobility"},
)
result = await PatentSourceCollector().collect(source, COMPANY)
assert result.status == SourceStatus.ACTIVE
assert len(result.documents) == 1
assert result.documents[0].metadata["is_fixture"] is True
@pytest.mark.asyncio
async def test_review_collector_disabled_without_fixture_key():
source = SourceConfig(id="s1", source_type=SourceType.REVIEW, name="Reviews", base_url=None)
result = await ReviewSourceCollector().collect(source, COMPANY)
assert result.status == SourceStatus.DISABLED
assert result.documents == []
@pytest.mark.asyncio
async def test_review_collector_loads_fixture_when_configured():
source = SourceConfig(
id="s1",
source_type=SourceType.REVIEW,
name="Reviews",
base_url=None,
configuration_metadata={"fixture_key": "acme_mobility"},
)
result = await ReviewSourceCollector().collect(source, COMPANY)
assert result.status == SourceStatus.ACTIVE
assert len(result.documents) == 2
assert all(d.metadata["is_fixture"] for d in result.documents)