121 lines
4.0 KiB
TypeScript
121 lines
4.0 KiB
TypeScript
import { fakeResourceIndex } from "../../../locals_list/test_helpers";
|
|
import { resourceUpdate } from "../assertion_support";
|
|
import { unpackStep, TOOL_MOUNT, DISMOUNTED } from "../unpack_step";
|
|
import {
|
|
selectAllPlantPointers,
|
|
selectAllTools,
|
|
selectAllGenericPointers,
|
|
} from "../../../../resources/selectors";
|
|
import { DropDownPair } from "../interfaces";
|
|
import { fakeTool } from "../../../../__test_support__/fake_state/resources";
|
|
import {
|
|
buildResourceIndex,
|
|
} from "../../../../__test_support__/resource_index_builder";
|
|
describe("unpackStep()", () => {
|
|
function assertGoodness(result: DropDownPair,
|
|
action_label: string,
|
|
action_value: string,
|
|
resource_label: string,
|
|
resource_value: string | number): void {
|
|
expect(result.rightSide.label).toBe(action_label);
|
|
expect(result.rightSide.value).toBe(action_value);
|
|
expect(result.leftSide.label).toBe(resource_label);
|
|
expect(result.leftSide.value).toBe(resource_value);
|
|
}
|
|
|
|
it("unpacks empty tool_ids", () => {
|
|
const result = unpackStep({
|
|
step: resourceUpdate({ label: "mounted_tool_id", value: 0 }),
|
|
resourceIndex: fakeResourceIndex()
|
|
});
|
|
expect(result).toEqual(DISMOUNTED());
|
|
});
|
|
|
|
it("unpacks valid tool_ids", () => {
|
|
const resourceIndex = fakeResourceIndex();
|
|
const { body } = selectAllTools(resourceIndex)[0];
|
|
expect(body).toBeTruthy();
|
|
|
|
const result = unpackStep({
|
|
step: resourceUpdate({ label: "mounted_tool_id", value: body.id || NaN }),
|
|
resourceIndex
|
|
});
|
|
const actionLabel = "Mounted to: Generic Tool";
|
|
const { label, value } = TOOL_MOUNT();
|
|
assertGoodness(result, actionLabel, "mounted", label, value);
|
|
});
|
|
|
|
it("unpacks valid tool_ids with missing names", () => {
|
|
const tool = fakeTool();
|
|
tool.body.id = 1;
|
|
tool.body.name = undefined;
|
|
const resourceIndex = buildResourceIndex([tool]).index;
|
|
const { body } = selectAllTools(resourceIndex)[0];
|
|
expect(body).toBeTruthy();
|
|
|
|
const result = unpackStep({
|
|
step: resourceUpdate({ label: "mounted_tool_id", value: body.id || NaN }),
|
|
resourceIndex
|
|
});
|
|
const actionLabel = "Mounted to: Untitled Tool";
|
|
const { label, value } = TOOL_MOUNT();
|
|
assertGoodness(result, actionLabel, "mounted", label, value);
|
|
});
|
|
|
|
it("unpacks invalid tool_ids (that may have been valid previously)", () => {
|
|
const result = unpackStep({
|
|
step: resourceUpdate({ label: "mounted_tool_id", value: Infinity }),
|
|
resourceIndex: fakeResourceIndex()
|
|
});
|
|
const actionLabel = "Mounted to: an unknown tool";
|
|
const { label, value } = TOOL_MOUNT();
|
|
assertGoodness(result, actionLabel, "mounted", label, value);
|
|
});
|
|
|
|
it("unpacks discarded_at operations", () => {
|
|
const resourceIndex = fakeResourceIndex();
|
|
const { body } = selectAllGenericPointers(resourceIndex)[0];
|
|
expect(body.pointer_type).toBe("GenericPointer");
|
|
|
|
const result = unpackStep({
|
|
step: resourceUpdate({
|
|
resource_type: "GenericPointer",
|
|
resource_id: body.id || -1,
|
|
label: "discarded_at",
|
|
value: "non-configurable"
|
|
}), resourceIndex
|
|
});
|
|
assertGoodness(result,
|
|
"Removed",
|
|
"removed",
|
|
`${body.name} (${body.x}, ${body.y}, ${body.z})`,
|
|
body.id || NaN);
|
|
});
|
|
|
|
it("unpacks plant_stage operations", () => {
|
|
const resourceIndex = fakeResourceIndex();
|
|
const plant = selectAllPlantPointers(resourceIndex)[1];
|
|
expect(plant).toBeTruthy();
|
|
|
|
const result = unpackStep({
|
|
step: resourceUpdate({
|
|
resource_type: "Plant",
|
|
resource_id: plant.body.id || -1,
|
|
label: "plant_stage",
|
|
value: "wilting"
|
|
}), resourceIndex
|
|
});
|
|
const { body } = plant;
|
|
const plantName = `${body.name} (${body.x}, ${body.y}, ${body.z})`;
|
|
assertGoodness(result, "wilting", "wilting", plantName, body.id || NaN);
|
|
});
|
|
|
|
it("unpacks unknown resource_update steps", () => {
|
|
const result = unpackStep({
|
|
step: resourceUpdate({}),
|
|
resourceIndex: fakeResourceIndex()
|
|
});
|
|
assertGoodness(result, "some_attr = some_value", "some_value", "Other", 1);
|
|
});
|
|
});
|