feat: add sponsor seed data fixture (#323) #327
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/basketball-api!327
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "323-sponsor-seed-data"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds a JSON seed data fixture containing 44 sponsor entries sourced from Marcus's contact list. Each entry has business_name, email, and category fields.
Changes
data/sponsors_seed.json— new file with 44 sponsor objects across 7 categories (financial, food, retail, automotive, construction, fitness, dental)Test Plan
python3 -c "import json; d=json.load(open('data/sponsors_seed.json')); print(f'{len(d)} sponsors loaded')"returns44 sponsors loadedReview Checklist
Related Notes
None.
Related
Closes #323
PR #327 Review — QA Agent
DOMAIN REVIEW
Tech stack: Data-only (JSON seed file). No Python/FastAPI code changes. Review focuses on data correctness against issue #323 acceptance criteria.
Entry count: 44 entries. Matches source data breakdown: financial(6) + food(21) + retail(1) + automotive(5) + construction(4) + fitness(2) + dental(5) = 44. PASS
Schema: Every entry has exactly three fields:
business_name,email,category. No missing or extra fields. PASSValid JSON: Proper JSON array, no trailing commas, no syntax issues. Parseable by
json.load(). PASSDuplicate emails: All 44 email addresses are unique. Raising Cane's correctly has 3 separate entries for 3 distinct email addresses (
community@,marketing@,info@raisingcanes.com), matching the "one entry per unique email" constraint. PASSCategory validation: All categories used (financial, food, retail, automotive, construction, fitness, dental) are from the allowed set in the issue spec. No invalid categories. PASS
No placeholders: No TBD, unknown, or placeholder email addresses. All businesses without emails from Marcus were correctly omitted. PASS
BLOCKERS
None. Data-only PR — no executable code, so standard code blockers (test coverage, input validation, secrets, DRY) do not apply.
NITS
"The Joint Chiropractic" categorized as
fitness: A chiropractic clinic is arguably more "health" than "fitness." The allowed categories includeother. Non-blocking — verify against Marcus's original categorization intent.Sorting: Entries are grouped by category (good for readability). Within categories, order follows Marcus's listing rather than alphabetical. Just an observation.
SOP COMPLIANCE
323-sponsor-seed-data)Closes #323VERDICT: APPROVED
Data file matches all acceptance criteria from issue #323: correct count (44), correct schema, no duplicates, valid JSON, correct categories, no placeholder entries. No blockers.
PR #327 Review
DOMAIN REVIEW
Stack: Static JSON data fixture (no Python/FastAPI code in this PR).
This PR adds a single file
data/sponsors_seed.jsoncontaining 44 sponsor entries. Each entry has three fields:business_name,email,category. Thedata/directory is new to this repo -- no prior fixtures exist.Data quality audit (manual verification from diff):
Observation: "The Joint Chiropractic" is categorized as "fitness" -- arguable whether chiropractic is fitness or health/medical, but this is a judgment call, not a bug.
BLOCKERS
None.
This is a static data fixture with no executable code, no user input handling, no auth logic, and no secrets. The BLOCKER criteria (test coverage for new functionality, unvalidated user input, secrets in code, DRY violations in auth paths) do not apply to a passive JSON file.
The "no test coverage" blocker does not apply here -- this is seed data, not functionality. The consuming code (PR #328 -- Sponsor model + CRUD) is where test coverage will be evaluated.
NITS
No JSON schema validation: There is no JSON Schema or Pydantic model in this PR to enforce the
{business_name, email, category}shape. The consuming PR (#328) should define the expected schema. Not a blocker for this PR since the data file is inert until loaded.Category enum not defined here: The 7 category values (financial, food, retail, automotive, construction, fitness, dental) should be enforced as an enum in the consuming model. Just a note for the #328 review.
SOP COMPLIANCE
323-sponsor-seed-datafollows{issue-number}-{kebab-case-purpose}PROCESS OBSERVATIONS
VERDICT: APPROVED