Make Ctrl+Plus context aware
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { describe, it } from "node:test";
|
||||
import {
|
||||
getInsertionSortOrder,
|
||||
resolveGridInsertionIntent,
|
||||
} from "../src/frontend/utils/circuit-grid-insertion.js";
|
||||
|
||||
describe("circuit grid insertion", () => {
|
||||
it("inserts a circuit after circuit-level selections", () => {
|
||||
assert.deepEqual(
|
||||
resolveGridInsertionIntent(
|
||||
{
|
||||
rowType: "circuitCompact",
|
||||
cellKind: "circuitField",
|
||||
sectionId: "section-1",
|
||||
circuitId: "circuit-1",
|
||||
deviceId: "row-1",
|
||||
},
|
||||
"fallback"
|
||||
),
|
||||
{ kind: "circuit", sectionId: "section-1", afterCircuitId: "circuit-1" }
|
||||
);
|
||||
});
|
||||
|
||||
it("inserts a device after device-level selections in compact and expanded circuits", () => {
|
||||
assert.deepEqual(
|
||||
resolveGridInsertionIntent({
|
||||
rowType: "circuitCompact",
|
||||
cellKind: "deviceField",
|
||||
sectionId: "section-1",
|
||||
circuitId: "circuit-1",
|
||||
deviceId: "row-1",
|
||||
}),
|
||||
{
|
||||
kind: "device",
|
||||
sectionId: "section-1",
|
||||
circuitId: "circuit-1",
|
||||
afterDeviceRowId: "row-1",
|
||||
}
|
||||
);
|
||||
assert.deepEqual(
|
||||
resolveGridInsertionIntent({
|
||||
rowType: "deviceRow",
|
||||
cellKind: "deviceField",
|
||||
sectionId: "section-1",
|
||||
circuitId: "circuit-1",
|
||||
deviceId: "row-2",
|
||||
}),
|
||||
{
|
||||
kind: "device",
|
||||
sectionId: "section-1",
|
||||
circuitId: "circuit-1",
|
||||
afterDeviceRowId: "row-2",
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it("uses the active section for placeholders and missing selections", () => {
|
||||
assert.deepEqual(
|
||||
resolveGridInsertionIntent({
|
||||
rowType: "placeholder",
|
||||
cellKind: "deviceField",
|
||||
sectionId: "section-1",
|
||||
}),
|
||||
{ kind: "circuit", sectionId: "section-1" }
|
||||
);
|
||||
assert.deepEqual(resolveGridInsertionIntent(null, "section-2"), {
|
||||
kind: "circuit",
|
||||
sectionId: "section-2",
|
||||
});
|
||||
});
|
||||
|
||||
it("creates stable sort values between neighbours or at the end", () => {
|
||||
const entries = [
|
||||
{ id: "a", sortOrder: 10 },
|
||||
{ id: "b", sortOrder: 20 },
|
||||
{ id: "c", sortOrder: 30 },
|
||||
];
|
||||
|
||||
assert.equal(getInsertionSortOrder(entries, "a"), 15);
|
||||
assert.equal(getInsertionSortOrder(entries, "c"), 40);
|
||||
assert.equal(getInsertionSortOrder(entries), 40);
|
||||
assert.equal(getInsertionSortOrder([], "missing"), 10);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user