Add toolbox library page with editable examples
All checks were successful
Deploy Sokko G / deploy (push) Successful in 7s
All checks were successful
Deploy Sokko G / deploy (push) Successful in 7s
This commit is contained in:
parent
8eb622e05d
commit
9b72f4934c
20 changed files with 4774 additions and 31 deletions
|
|
@ -4,7 +4,7 @@ import assert from "node:assert/strict";
|
|||
import { evaluateTableCell } from "../website/src/features/toolboxes/modules/tableFormulaEngine.js";
|
||||
import { parseColonImportLines } from "../website/src/features/toolboxes/modules/textImport.js";
|
||||
import { getTimePatternRecurrenceMs, getTimePatternTargetMs } from "../website/src/features/toolboxes/modules/timerUtils.js";
|
||||
import { compactModuleDataForStorage, createToolboxExportPayload, normalizeCombosData, normalizeNotepadData, normalizeTableData, normalizeTaskPlannerData } from "../website/src/features/toolboxes/storage/toolboxStorage.js";
|
||||
import { compactModuleDataForStorage, createToolboxExportPayload, normalizeChecklistData, normalizeCombosData, normalizeNotepadData, normalizeTableData, normalizeTaskPlannerData } from "../website/src/features/toolboxes/storage/toolboxStorage.js";
|
||||
import { applyGroupedReorderOperation, completeGroupOrder, getBoundaryItemId, getGroupedEntries, moveGroupOrder, moveGroupOrderToEnd, moveGroupOrderToStart, moveItem, moveItemGroup } from "../website/src/hooks/useGroupedReorder.js";
|
||||
|
||||
test("colon text import keeps urls intact after the first separator", () => {
|
||||
|
|
@ -60,7 +60,7 @@ test("table storage clamps dimensions and compacts non-empty cells", () => {
|
|||
rows: 200,
|
||||
columns: 40,
|
||||
cells: {
|
||||
A1: "Boss",
|
||||
A1: "Boss ",
|
||||
T50: "=A1+1",
|
||||
U51: "Ignored",
|
||||
B1: " "
|
||||
|
|
@ -79,14 +79,14 @@ test("table storage clamps dimensions and compacts non-empty cells", () => {
|
|||
|
||||
assert.equal(normalized.rows, 50);
|
||||
assert.equal(normalized.columns, 20);
|
||||
assert.deepEqual(normalized.cells, { A1: "Boss", T50: "=A1+1" });
|
||||
assert.deepEqual(normalized.cells, { A1: "Boss ", T50: "=A1+1" });
|
||||
assert.deepEqual(normalized.rowLabels, { 0: "Boss final " });
|
||||
assert.deepEqual(normalized.columnLabels, { 0: "Item final " });
|
||||
|
||||
const compact = compactModuleDataForStorage("table", normalized);
|
||||
assert.equal(compact.rows, 50);
|
||||
assert.equal(compact.columns, 20);
|
||||
assert.deepEqual(compact.cells, { A1: "Boss", T50: "=A1+1" });
|
||||
assert.deepEqual(compact.cells, { A1: "Boss ", T50: "=A1+1" });
|
||||
assert.deepEqual(compact.rowLabels, { 0: "Boss final " });
|
||||
assert.deepEqual(compact.columnLabels, { 0: "Item final " });
|
||||
assert.deepEqual(compactModuleDataForStorage("table", { rows: 10, columns: 6, cells: {}, columnLabels: { 0: "Item " } }), {
|
||||
|
|
@ -226,6 +226,26 @@ test("grouped reorder operation moves whole categories", () => {
|
|||
assert.deepEqual(moved.categoryOrder, ["Farm", "Boss"]);
|
||||
});
|
||||
|
||||
test("checklist data drops empty titled sections", () => {
|
||||
const normalized = normalizeChecklistData({
|
||||
sections: [
|
||||
{ id: "empty", title: "Empty", items: [] },
|
||||
{ id: "filled", title: "Filled", items: [{ id: "item1", label: "Potion" }] }
|
||||
]
|
||||
});
|
||||
|
||||
assert.deepEqual(normalized.sections.map((section) => section.id), ["filled"]);
|
||||
|
||||
const compact = compactModuleDataForStorage("checklist", {
|
||||
sections: [
|
||||
{ id: "empty", title: "Empty", items: [] },
|
||||
{ id: "filled", title: "Filled", items: [{ id: "item1", label: "Potion" }] }
|
||||
]
|
||||
});
|
||||
|
||||
assert.deepEqual(compact.sections.map((section) => section.id), ["filled"]);
|
||||
});
|
||||
|
||||
test("combos storage normalizes devices, steps and compact export ids", () => {
|
||||
const longText = "x".repeat(120);
|
||||
const normalized = normalizeCombosData({
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue