laddr-import: tick the slug-reachability validation criterion now that read-api has landed
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 74/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Quiet
- Tech stack
- typescript
- Domain
- api, documentation, testing
Research direction
Start with apps/api/scripts/fixtures/laddr-fixture.sql, the importer, createTestRepo(), createTestPrivateStore(), and buildApp() to understand the test setup. Run the importer, boot the app with the test repository, and exercise /api/projects/:slug and /api/people/:slug for up to 100 imported records. Done means the documented response shapes are verified and the plan's Notes section records that the slug-reachability criterion was closed by this issue's tests.
Written by the indexing model from the issue text.
Description
Background
The laddr-import plan (PR #24) left this Validation criterion unchecked:
- All laddr slugs are accessible via
/projects/:slugand/members/:slugafter the import (verified via API test on a sample of 100 random records)
…with a Notes line claiming "those routes are owned by read-api and aren't built yet." That's not accurate at the time the PR was opened — read-api (PR #22) merged at 17:50 UTC; laddr-import's PR opened at 22:29 UTC. The /api/projects/:slug and /api/people/:slug endpoints existed.
What to do
Add an end-to-end test that:
- Runs the importer against
apps/api/scripts/fixtures/laddr-fixture.sqlinto acreateTestRepo()+createTestPrivateStore(). - Boots
buildApp({ overrideEnv: { CFP_DATA_REPO_PATH: <the test repo path>, ... } }). - Picks 100 random imported records (or all of them if the fixture has fewer); for each, asserts
GET /api/projects/<slug>and/orGET /api/people/<slug>returns the documented response shape. - Ticks the validation criterion in the plan.
Note: plans are frozen after merge, so the tick happens in this issue's PR via a small docs amendment under "Notes" rather than rewriting the criterion. Add a line like "Validation criterion 9 (slug reachability) closed out via Issue #N's tests; see [link]."
Why bother
Closes the loop on a real validation gap. The import is one-shot — wrong slug → wrong URL forever. The test costs ~5min to write and pays for itself the first time it catches a slugify mistake.
- Dominant language
- TypeScript
- Stars
- 1
- Forks
- 1
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 25
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CodeForPhilly/codeforphilly-ng
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
MarkdownEditor toolbar: use Radix Toolbar from radix-ui instead of the hand-rolled roving tabindex Openenhancement
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
All issues in CodeForPhilly/codeforphilly-ng
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·