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 {
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 {
const axios = require("axios");
const baseUrl = bru.getEnvVar("baseUrl") || bru.getVar("baseUrl");
const playerId = bru.getEnvVar("playerId") || bru.getVar("playerId");
const nodeId = "prototype_urban_bulk_delta";
await axios.post(
`${baseUrl}/game/players/${playerId}/move`,
{
schemaVersion: 1,
target: { x: 10, y: 0.9, z: -6 },
target: { x: 16, y: 0.9, z: 0 },
},
{ headers: { "Content-Type": "application/json" } },
);
@ -25,7 +26,7 @@ script:pre-request {
`${baseUrl}/game/players/${playerId}/interact`,
{
schemaVersion: 1,
interactableId: "prototype_resource_node_alpha",
interactableId: nodeId,
},
{ headers: { "Content-Type": "application/json" } },
);
@ -48,7 +49,7 @@ headers {
body:json {
{
"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
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
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
-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.

View File

@ -52,7 +52,7 @@
|------|---------|
| `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 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/plans/NEO-63-implementation-plan.md` | This plan. |