NEO-63: fix Bruno depletion test node isolation.

Use prototype_urban_bulk_delta so earlier alpha gathers in the
collection do not pre-deplete capacity under CI Postgres persistence.
pull/97/head
VinPropane 2026-05-24 15:51:32 -04:00
parent 3834b2316a
commit 0f846f90b9
3 changed files with 16 additions and 7 deletions

View File

@ -5,18 +5,19 @@ meta {
} }
docs { docs {
NEO-63: pre-request exhausts prototype_resource_node_alpha capacity (10 successful gathers), then this interact should deny with node_depleted. NEO-63: uses prototype_urban_bulk_delta (not alpha) so earlier interaction requests in this collection do not pre-deplete capacity. Pre-request exhausts the node (10 successful gathers), then this interact should deny with node_depleted.
} }
script:pre-request { script:pre-request {
const axios = require("axios"); const axios = require("axios");
const baseUrl = bru.getEnvVar("baseUrl") || bru.getVar("baseUrl"); const baseUrl = bru.getEnvVar("baseUrl") || bru.getVar("baseUrl");
const playerId = bru.getEnvVar("playerId") || bru.getVar("playerId"); const playerId = bru.getEnvVar("playerId") || bru.getVar("playerId");
const nodeId = "prototype_urban_bulk_delta";
await axios.post( await axios.post(
`${baseUrl}/game/players/${playerId}/move`, `${baseUrl}/game/players/${playerId}/move`,
{ {
schemaVersion: 1, schemaVersion: 1,
target: { x: 10, y: 0.9, z: -6 }, target: { x: 16, y: 0.9, z: 0 },
}, },
{ headers: { "Content-Type": "application/json" } }, { headers: { "Content-Type": "application/json" } },
); );
@ -25,7 +26,7 @@ script:pre-request {
`${baseUrl}/game/players/${playerId}/interact`, `${baseUrl}/game/players/${playerId}/interact`,
{ {
schemaVersion: 1, schemaVersion: 1,
interactableId: "prototype_resource_node_alpha", interactableId: nodeId,
}, },
{ headers: { "Content-Type": "application/json" } }, { headers: { "Content-Type": "application/json" } },
); );
@ -48,7 +49,7 @@ headers {
body:json { body:json {
{ {
"schemaVersion": 1, "schemaVersion": 1,
"interactableId": "prototype_resource_node_alpha" "interactableId": "prototype_urban_bulk_delta"
} }
} }

View File

@ -46,12 +46,20 @@ curl -sS "${BASE}/game/players/${ID}/skill-progression"
## Depletion deny ## Depletion deny
Repeat interact on the same node until capacity is exhausted (**10** successful gathers on a fresh node), then interact again: 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 ```bash
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \ curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-d '{"schemaVersion":1,"interactableId":"prototype_resource_node_alpha"}' -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. Expect **HTTP 200**, **`allowed`:** **false**, **`reasonCode`:** **`node_depleted`**. Inventory and XP totals unchanged on that denied request.

View File

@ -52,7 +52,7 @@
|------|---------| |------|---------|
| `server/NeonSprawl.Server.Tests/Game/Interaction/InteractionResourceNodeGatherIntegrationTests.cs` | HTTP integration: inventory, XP, depletion, terminal, deny registry. | | `server/NeonSprawl.Server.Tests/Game/Interaction/InteractionResourceNodeGatherIntegrationTests.cs` | HTTP integration: inventory, XP, depletion, terminal, deny registry. |
| `bruno/neon-sprawl-server/interaction/Post interact gather then get inventory.bru` | Happy path: interact + assert scrap in bag. | | `bruno/neon-sprawl-server/interaction/Post interact gather then get inventory.bru` | Happy path: interact + assert scrap in bag. |
| `bruno/neon-sprawl-server/interaction/Post interact depleted node deny.bru` | Pre-loop 10 gathers; 11th **`node_depleted`**. | | `bruno/neon-sprawl-server/interaction/Post interact depleted node deny.bru` | Pre-loop 10 gathers on **`prototype_urban_bulk_delta`** (isolated from alpha requests earlier in collection); 11th **`node_depleted`**. |
| `docs/manual-qa/NEO-63.md` | curl gather → inventory + depletion deny. | | `docs/manual-qa/NEO-63.md` | curl gather → inventory + depletion deny. |
| `docs/plans/NEO-63-implementation-plan.md` | This plan. | | `docs/plans/NEO-63-implementation-plan.md` | This plan. |