neon-sprawl/bruno/neon-sprawl-server/craft/Post craft deny insufficien...

62 lines
1.7 KiB
Plaintext

meta {
name: POST craft deny insufficient materials
type: http
seq: 1
}
docs {
NEO-70: make_field_stim_mk0 without refined_plate_stock denies with insufficient_materials. Pre-request clears refined stock (inventory POST setup only) so the deny is stable after dotnet test / prior Bruno requests.
}
script:pre-request {
const { getInventory, sumItemQuantity, postMutation } = require("./scripts/inventory-api-helper.js");
async function clearItem(itemId) {
let qty = sumItemQuantity(await getInventory(bru), itemId);
while (qty > 0) {
const removeQty = Math.min(qty, 99);
const response = await postMutation(bru, {
schemaVersion: 1,
mutationKind: "remove",
itemId,
quantity: removeQty,
});
if (response.status !== 200 || response.data?.applied !== true) {
throw new Error(`clear ${itemId} failed: ${response.status} ${JSON.stringify(response.data)}`);
}
qty = sumItemQuantity(await getInventory(bru), itemId);
}
}
await clearItem("refined_plate_stock");
}
post {
url: {{baseUrl}}/game/players/{{playerId}}/craft
body: json
auth: none
}
headers {
content-type: application/json
}
body:json {
{
"schemaVersion": 1,
"recipeId": "make_field_stim_mk0"
}
}
tests {
test("denies with insufficient_materials", function () {
expect(res.getStatus()).to.equal(200);
const body = res.getBody();
expect(body.schemaVersion).to.equal(1);
expect(body.success).to.equal(false);
expect(body.reasonCode).to.equal("insufficient_materials");
expect(body.inputsConsumed).to.be.an("array").that.is.empty;
expect(body.outputsGranted).to.be.an("array").that.is.empty;
});
}