51 lines
2.8 KiB
Markdown
51 lines
2.8 KiB
Markdown
# Task 4: Health and demo-character API report
|
|
|
|
## RED
|
|
|
|
- Re-read every Markdown document below `docs/` and inspected `combat-screen.png`, `hunting-screen.png`, and `world-travel-screen.png` before implementation.
|
|
- Added focused health and character-service tests, then ran:
|
|
|
|
```powershell
|
|
npm test --workspace=@ashen-realms/api -- health.controller.spec.ts characters.service.spec.ts --runInBand
|
|
```
|
|
|
|
- Observed the expected RED result: both suites failed because `HealthController` and `CharactersService` did not exist.
|
|
|
|
## GREEN
|
|
|
|
- Replaced the scaffold root controller/service with `HealthModule` and `CharactersModule`.
|
|
- `GET /api/health` returns `{ status: 'ok' }` without a database query.
|
|
- `GET /api/characters/me` obtains the fixed demo ID server-side, loads `currentLocation`, maps `baseHp` to `maxHp` and `baseAttack` to `attack`, and raises `NotFoundException` when the seed is absent.
|
|
- Preserved the existing tested `configureApplication()` global-prefix seam and enabled Nest shutdown hooks in `main.ts` without repeating prefix configuration.
|
|
- Updated the E2E assertion from the retired hello-world root route to `/api/health`; it replaces both database-dependent modules so the health test remains database independent.
|
|
|
|
## Verification
|
|
|
|
| Command | Result |
|
|
| --- | --- |
|
|
| `npm test --workspace=@ashen-realms/api -- health.controller.spec.ts characters.service.spec.ts --runInBand` | PASS: 2 suites, 3 tests |
|
|
| `npm run test:e2e --workspace=@ashen-realms/api -- --runInBand` | PASS: 1 suite, 2 tests |
|
|
| `npm test --workspace=@ashen-realms/api -- --runInBand` | PASS: 5 suites, 9 tests |
|
|
| `npm run build:api` | PASS |
|
|
| `apps/api/node_modules/.bin/prettier.cmd --check <task files>` | PASS |
|
|
| `git diff --check` | PASS |
|
|
|
|
`npx prettier` did not resolve the workspace-local executable in this environment; the checked-in workspace binary at `apps/api/node_modules/.bin/prettier.cmd` was used for the formatting check.
|
|
|
|
## Files
|
|
|
|
- Added `apps/api/src/health/*` and character controller/service/module plus unit tests.
|
|
- Updated `apps/api/src/app.module.ts`, `apps/api/src/main.ts`, and `apps/api/test/app.e2e-spec.ts`.
|
|
- Removed `apps/api/src/app.controller.ts`, `app.controller.spec.ts`, and `app.service.ts`.
|
|
|
|
## Self-review and concerns
|
|
|
|
- Confirmed the repository query loads only the required current-location relation and response does not expose persistence-only base-stat names.
|
|
- Confirmed the missing seed path is tested as a 404-producing Nest exception.
|
|
- Confirmed `/` remains a 404 while `/api/health` is available through the existing global prefix.
|
|
- No task-specific concerns remain. Pre-existing untracked `apps/web/public/images/` and `docs/references/Ashen_Realms_Visual_Asset_Style_Guide_V1.md` are intentionally excluded.
|
|
|
|
## Commit
|
|
|
|
- Pending: `feat: expose health and demo character APIs`
|