neon-sprawl/docs/manual-qa/NEO-63.md

74 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Manual QA — NEO-63 (gather via interact → inventory)
Reference: [implementation plan](../plans/NEO-63-implementation-plan.md), [NEO-62 implementation plan](../plans/NEO-62-implementation-plan.md) gather engine, [NEO-55](./NEO-55.md) inventory GET.
## Preconditions
- Run `NeonSprawl.Server` from `server/NeonSprawl.Server` (`dotnet run`; default `http://localhost:5253`).
- Player **`dev-local-1`** (default seed).
```bash
BASE=http://localhost:5253
ID=dev-local-1
```
## Happy path — gather → inventory + XP
Move in range of **`prototype_resource_node_alpha`** (anchor **12, 6**; stand at **10, 6**):
```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/move" \
-H "Content-Type: application/json" \
-d '{"schemaVersion":1,"target":{"x":10,"y":0.9,"z":-6}}'
```
Interact:
```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
-H "Content-Type: application/json" \
-d '{"schemaVersion":1,"interactableId":"prototype_resource_node_alpha"}'
```
Expect **HTTP 200**, **`allowed`:** **true**.
Inventory should show **`scrap_metal_bulk`** quantity **1** (or +1 per repeat):
```bash
curl -sS "${BASE}/game/players/${ID}/inventory"
```
Skill progression should show **`salvage`** **`xp`** **+10** per successful gather:
```bash
curl -sS "${BASE}/game/players/${ID}/skill-progression"
```
## Depletion deny
Uses **`prototype_urban_bulk_delta`** (anchor **18, 0**) so earlier Bruno interaction requests on alpha do not pre-deplete capacity in the shared CI Postgres store. Move in range (**16, 0**), exhaust with **10** successful interacts on delta, then interact again:
```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/move" \
-H "Content-Type: application/json" \
-d '{"schemaVersion":1,"target":{"x":16,"y":0.9,"z":0}}'
```
(Repeat interact on **`prototype_urban_bulk_delta`** ten times with **`allowed: true`**, then:)
```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
-H "Content-Type: application/json" \
-d '{"schemaVersion":1,"interactableId":"prototype_urban_bulk_delta"}'
```
Expect **HTTP 200**, **`allowed`:** **false**, **`reasonCode`:** **`node_depleted`**. Inventory and XP totals unchanged on that denied request.
## Control — terminal
Move near **`prototype_terminal`**, interact with **`prototype_terminal`**: **`allowed`:** **true**; no **`scrap_metal_bulk`** added; no gather XP from terminal alone.
## Bruno
Run folder `bruno/neon-sprawl-server/interaction/`**`Post interact gather then get inventory.bru`** and **`Post interact depleted node deny.bru`**.