docs+code: rename tool labels everywhere
Sweep follow-up to 93e43fc. Display labels now consistent across docs,
landing pages, CLI output, code comments, docstrings, and test prose.
Five parallel surfaces touched:
- docs (EN + ES): README, USER-GUIDE, CLI-REFERENCE, and 11 internal
design/planning docs
- landing pages: index + bookkeeper/revops/shopify-pet
- src: CLI module docstrings, _TOOL_DISPLAY dicts in cli_analyze.py
and gui/components/_legacy.py, core module headers, every tool
page's module docstring
- tests: class/method/module docstrings and section-header comments
- test-cases READMEs
Page slugs (1_Deduplicator etc.), tool_id strings (01_deduplicator
etc.), Python class names (TestDeduplicatorWorkflow, FeatureFlag.*),
URL paths, anchor IDs, CSS classes, and asset filenames were left
intact since they're code identifiers / structural references.
All 2033 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
These exercise the chrome-level gate that ``hide_streamlit_chrome``
|
||||
installs: when no valid license is on disk, every page renders the
|
||||
activation form instead of the page body, and tool widgets do NOT
|
||||
appear. We test against the Deduplicator page since it's the smallest
|
||||
appear. We test against the Find Duplicates page since it's the smallest
|
||||
real-world tool that depends on chrome.
|
||||
|
||||
The autouse fixture in ``tests/conftest.py`` sets
|
||||
|
||||
@@ -5,7 +5,7 @@ expander that houses every per-column / per-strategy knob. It's the
|
||||
densest single widget surface in the GUI, so a session-state key drift
|
||||
in there cascades into every dedup session.
|
||||
|
||||
We exercise it via the Deduplicator page (rendering ``config_panel``
|
||||
We exercise it via the Find Duplicates page (rendering ``config_panel``
|
||||
in isolation requires a fake Streamlit context). The page provides
|
||||
the surrounding state; we poke widgets and verify their effects.
|
||||
"""
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
``match_group_card`` from ``src.gui.components`` has two modes (decided
|
||||
/ undecided) and a Confirm/Undo flow keyed by session_state. We test
|
||||
each state by exercising the parent Deduplicator page end to end and
|
||||
each state by exercising the parent Find Duplicates page end to end and
|
||||
then poking at ``review_decisions`` directly.
|
||||
|
||||
Why not unit-test ``match_group_card`` in isolation? AppTest needs a
|
||||
|
||||
@@ -21,7 +21,7 @@ from .conftest import collected_text, stash_upload
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestMalformedUploadErrors:
|
||||
"""Bytes that look like a CSV but aren't parseable. The Deduplicator
|
||||
"""Bytes that look like a CSV but aren't parseable. The Find Duplicates
|
||||
page wraps ``read_file`` failures in an ``st.error`` with the file
|
||||
name and the structured ``format_for_user`` output."""
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ exist, each pinned here:
|
||||
3. **Upload + matching passed normalization** — gate is a no-op; the
|
||||
page proceeds.
|
||||
|
||||
We exercise the gate via the Deduplicator page (any tool page would
|
||||
We exercise the gate via the Find Duplicates page (any tool page would
|
||||
work; dedup is the smallest one that doesn't depend on heavy widgets).
|
||||
"""
|
||||
|
||||
@@ -27,7 +27,7 @@ from .conftest import (
|
||||
)
|
||||
|
||||
|
||||
# Deduplicator is our canary — it calls ``require_normalization_gate``
|
||||
# Find Duplicates is our canary — it calls ``require_normalization_gate``
|
||||
# on the second line of the module. If the gate blocks, the dedup-
|
||||
# specific title shouldn't even render.
|
||||
GATED_PAGE = "1_Deduplicator"
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
"""GUI tests for the Lite tier.
|
||||
|
||||
A Lite license unlocks Deduplicator, Text Cleaner, Format
|
||||
Standardizer. Opening any other tool page (Missing Values, Column
|
||||
Mapper, Pipeline Runner, etc.) must render an upgrade prompt and
|
||||
short-circuit the page body.
|
||||
A Lite license unlocks Find Duplicates, Clean Text, Standardize
|
||||
Formats. Opening any other tool page (Fix Missing Values, Map
|
||||
Columns, Automated Workflows, etc.) must render an upgrade prompt
|
||||
and short-circuit the page body.
|
||||
|
||||
The home grid shows a 🔒 Locked badge on the cards for tools the
|
||||
user's tier doesn't unlock.
|
||||
@@ -104,7 +104,7 @@ class TestLiteHomeGridBadges:
|
||||
):
|
||||
home_app.run()
|
||||
text = collected_text(home_app)
|
||||
# Missing Value Handler is locked under Lite — its card should
|
||||
# Fix Missing Values is locked under Lite — its card should
|
||||
# have a 🔒 Locked badge.
|
||||
# We assert the lock glyph appears alongside the locked tool's
|
||||
# display name. Streamlit renders the markdown verbatim so the
|
||||
|
||||
@@ -19,7 +19,7 @@ from .conftest import collected_text, stash_upload
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Deduplicator
|
||||
# Find Duplicates
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestDeduplicatorWorkflow:
|
||||
@@ -64,7 +64,7 @@ class TestDeduplicatorWorkflow:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Text Cleaner
|
||||
# Clean Text
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestTextCleanerWorkflow:
|
||||
@@ -96,7 +96,7 @@ class TestTextCleanerWorkflow:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Format Standardizer
|
||||
# Standardize Formats
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestFormatStandardizerWorkflow:
|
||||
@@ -110,7 +110,7 @@ class TestFormatStandardizerWorkflow:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Missing Value Handler
|
||||
# Fix Missing Values
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestMissingValuesWorkflow:
|
||||
@@ -124,7 +124,7 @@ class TestMissingValuesWorkflow:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Column Mapper
|
||||
# Map Columns
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestColumnMapperWorkflow:
|
||||
@@ -138,7 +138,7 @@ class TestColumnMapperWorkflow:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Pipeline Runner
|
||||
# Automated Workflows
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestPipelineRunnerWorkflow:
|
||||
|
||||
@@ -41,8 +41,8 @@ class TestAnalyzeCli:
|
||||
assert result.exit_code == 0
|
||||
# The Rich table breaks lines; assert on stable substrings instead of
|
||||
# full finding ids.
|
||||
assert "Text Cleaner" in result.stdout
|
||||
assert "Missing Value" in result.stdout
|
||||
assert "Clean Text" in result.stdout
|
||||
assert "Fix Missing Values" in result.stdout
|
||||
# Severity column is rendered.
|
||||
assert "warn" in result.stdout
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Acceptance corpus for the Column Mapper.
|
||||
"""Acceptance corpus for the Map Columns tool.
|
||||
|
||||
Loads every fixture in ``test-cases/column-mapper-corpus/test_data/``
|
||||
and asserts the documented behaviour against the documented schema.
|
||||
|
||||
@@ -48,7 +48,7 @@ class TestAnalyzeCliE2E:
|
||||
proc = _run("-m", "src.cli_analyze", str(CORPUS_KITCHEN_SINK))
|
||||
assert proc.returncode == 0, proc.stderr
|
||||
# Rich tables wrap; assert on stable substrings.
|
||||
assert "Text Cleaner" in proc.stdout
|
||||
assert "Clean Text" in proc.stdout
|
||||
assert "csv_bom_stripped" in proc.stdout or "smart_quotes" in proc.stdout
|
||||
|
||||
def test_json_output_parses(self):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""Tier-specific tests: Lite tier feature set + gating.
|
||||
|
||||
Lite unlocks exactly three tools — Deduplicator, Text Cleaner,
|
||||
Format Standardizer — and locks the other six. We test:
|
||||
Lite unlocks exactly three tools — Find Duplicates, Clean Text,
|
||||
Standardize Formats — and locks the other six. We test:
|
||||
|
||||
- The features map for Lite returns the right three flags (and only
|
||||
those three).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
"""Acceptance corpus for the Missing Value Handler.
|
||||
"""Acceptance corpus for the Fix Missing Values tool.
|
||||
|
||||
Loads every fixture in ``test-cases/missing-corpus/test_data/`` and
|
||||
asserts the documented behaviour. The fixtures are split into:
|
||||
|
||||
@@ -25,7 +25,7 @@ from src.core import (
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Format Standardizer: single-tolist hot loop
|
||||
# Standardize Formats: single-tolist hot loop
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestStandardizerHotLoop:
|
||||
@@ -93,7 +93,7 @@ class TestStandardizerHotLoop:
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Deduplicator: per-call normalizer cache
|
||||
# Find Duplicates: per-call normalizer cache
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class TestDedupNormalizerCache:
|
||||
|
||||
Reference in New Issue
Block a user