pryscraper/tests/test_reports.py
cryptorugmunch 0ecc250349 refactor(pry): rename 19 root modules to pry_<name> to remove naming collision with routers/
The duplicate file names (advanced, agency, auth, compliance, costing, etc.) in
both root and routers/ made imports ambiguous. Renamed root modules to
pry_<name>.py so:

  from quality import X     ->  from pry_quality import X
  from routers.quality import router  (unchanged)

Also:
- Renamed x402.py to pry_x402/ package directory
- Fixed 21+ bare imports across api.py, deps.py, routers/, tests/, llm_providers/

Tests: 593 passed, 1 skipped (test_ready_returns_200 fails pre-existing
because Ollama is unreachable from test env, unrelated to this refactor).

Audit item 8.
2026-07-06 10:25:44 +02:00

106 lines
2.9 KiB
Python

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Rug Munch Media LLC
#
# Part of Pry — https://git.rugmunch.io/RugMunchMedia/pryscraper
# Licensed under MIT. See LICENSE.
"""Tests for white-label report generation."""
from pry_reports import generate_report, list_reports
def test_generate_competitive_report() -> None:
result = generate_report(
"competitive_analysis",
{
"competitors": [
{
"name": "Competitor A",
"price": 99.99,
"price_change": 5.0,
"last_updated": "2024-01-01",
},
{
"name": "Competitor B",
"price": 149.99,
"price_change": -2.5,
"last_updated": "2024-01-02",
},
],
"changes": ["Competitor A lowered prices on 3 products"],
},
)
assert result["success"] is True
assert result["type"] == "competitive_analysis"
assert result["format"] == "html"
def test_generate_price_report() -> None:
result = generate_report(
"price_monitor",
{
"products": [
{
"name": "Product X",
"previous_price": 100,
"current_price": 95,
"price_change": -5.0,
},
{
"name": "Product Y",
"previous_price": 50,
"current_price": 55,
"price_change": 10.0,
},
],
},
)
assert result["success"] is True
def test_generate_seo_report() -> None:
result = generate_report(
"seo_audit",
{
"seo_data": {"title": "My Page", "word_count": 1200, "has_schema": True},
"changes": [{"field": "title", "severity": "high", "to": "New Title"}],
},
)
assert result["success"] is True
def test_generate_content_report() -> None:
result = generate_report(
"content_tracker",
{
"pages": [
{
"title": "Homepage",
"url": "https://example.com",
"status": "unchanged",
"word_count": 500,
}
],
"changes": [],
},
)
assert result["success"] is True
def test_generate_with_branding() -> None:
result = generate_report(
"competitive_analysis",
{"competitors": []},
branding={"agency_name": "Acme Analytics", "brand_color": "#ff0000"},
)
assert result["success"] is True
def test_generate_unknown_type() -> None:
result = generate_report("unknown_type", {})
assert "error" in result
def test_list_reports() -> None:
generate_report("competitive_analysis", {"competitors": []})
reports = list_reports()
assert len(reports) >= 1