meta {
  name: POST interact depleted node deny
  type: http
  seq: 13
}

docs {
  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: 16, y: 0.9, z: 0 },
    },
    { headers: { "Content-Type": "application/json" } },
  );
  for (let i = 0; i < 10; i++) {
    const res = await axios.post(
      `${baseUrl}/game/players/${playerId}/interact`,
      {
        schemaVersion: 1,
        interactableId: nodeId,
      },
      { headers: { "Content-Type": "application/json" } },
    );
    if (!res.data.allowed) {
      throw new Error(`expected gather ${i + 1}/10 to succeed, got ${res.data.reasonCode}`);
    }
  }
}

post {
  url: {{baseUrl}}/game/players/{{playerId}}/interact
  body: json
  auth: none
}

headers {
  content-type: application/json
}

body:json {
  {
    "schemaVersion": 1,
    "interactableId": "prototype_urban_bulk_delta"
  }
}

tests {
  test("depleted node interact denied with node_depleted", function () {
    expect(res.getStatus()).to.equal(200);
    const body = res.getBody();
    expect(body.allowed).to.equal(false);
    expect(body.reasonCode).to.equal("node_depleted");
  });
}
