Add planner-aware memos and unified tool configuration panels
All checks were successful
Deploy Sokko G / deploy (push) Successful in 18s
All checks were successful
Deploy Sokko G / deploy (push) Successful in 18s
This commit is contained in:
parent
acd9b2fe11
commit
808610dcf2
53 changed files with 842 additions and 329 deletions
|
|
@ -10,14 +10,41 @@ async function seedMemosToolbox(page) {
|
|||
request.onsuccess = () => {
|
||||
const db = request.result;
|
||||
const tx = db.transaction(["kv", "modules"], "readwrite");
|
||||
const soonReset = new Date(Date.now() + 60 * 60 * 1000);
|
||||
const resetTime = `${String(soonReset.getHours()).padStart(2, "0")}:${String(soonReset.getMinutes()).padStart(2, "0")}`;
|
||||
tx.objectStore("kv").put([
|
||||
{ id: "memo-toolbox", name: "Toolbox mémos", modules: [{ id: "memos", type: "memos", title: "Mémos" }], moduleColumns: 1 }
|
||||
{
|
||||
id: "memo-toolbox",
|
||||
name: "Toolbox mémos",
|
||||
modules: [
|
||||
{ id: "memos", type: "memos", title: "Mémos" },
|
||||
{ id: "planner-one", type: "taskPlanner", title: "Urgent planner" },
|
||||
{ id: "planner-two", type: "taskPlanner", title: "Other planner" }
|
||||
],
|
||||
moduleColumns: 1
|
||||
}
|
||||
], "toolboxes");
|
||||
tx.objectStore("kv").put({ mhwilds: "memo-toolbox" }, "links");
|
||||
tx.objectStore("modules").put({
|
||||
key: "memo-toolbox:memos",
|
||||
data: { items: [{ id: "memo-1", text: "Préparer les potions", color: "#f6c453" }] }
|
||||
});
|
||||
tx.objectStore("modules").put({
|
||||
key: "memo-toolbox:planner-one",
|
||||
data: {
|
||||
resetTime,
|
||||
tasks: [
|
||||
{ id: "category-parent", title: "Raid principal", type: "unique", category: "Raid" },
|
||||
{ id: "daily-task", title: "Faire le donjon", type: "daily" },
|
||||
{ id: "done-task", title: "Déjà terminée", type: "daily", checked: true, checkedAt: Date.now() }
|
||||
],
|
||||
relations: [{ id: "relation", fromTaskId: "daily-task", toTaskId: "category-parent" }]
|
||||
}
|
||||
});
|
||||
tx.objectStore("modules").put({
|
||||
key: "memo-toolbox:planner-two",
|
||||
data: { tasks: [{ id: "unique-task", title: "Ponctuelle", type: "unique" }] }
|
||||
});
|
||||
tx.oncomplete = () => { db.close(); resolve(); };
|
||||
tx.onerror = () => reject(tx.error);
|
||||
};
|
||||
|
|
@ -54,3 +81,34 @@ test("shows and persists the memo ticker on linked game and full toolbox pages",
|
|||
await page.goto("/#/toolboxes");
|
||||
await expect(globalTicker).toHaveCount(0);
|
||||
});
|
||||
|
||||
test("links a planner, shows its reset warning and clears the link when it is removed", async ({ page }) => {
|
||||
await seedMemosToolbox(page);
|
||||
await page.goto("/#/toolbox/memo-toolbox");
|
||||
|
||||
const memos = page.locator('[data-module-id="memos"]');
|
||||
await memos.getByRole("button", { name: "Configuration", exact: true }).click();
|
||||
const dataSectionBox = await memos.locator(".module-configuration-data").boundingBox();
|
||||
const settingsSectionBox = await memos.locator(".module-configuration-specific").boundingBox();
|
||||
expect(settingsSectionBox.y).toBeGreaterThan(dataSectionBox.y + dataSectionBox.height);
|
||||
expect(settingsSectionBox.width).toBeCloseTo(dataSectionBox.width, 0);
|
||||
const plannerSelect = memos.getByRole("combobox", { name: "Planificateur lié", exact: true });
|
||||
await expect(plannerSelect).toHaveValue("");
|
||||
await plannerSelect.selectOption("planner-one");
|
||||
|
||||
const globalTicker = page.locator(".global-memos-ticker");
|
||||
await expect(globalTicker).toContainText("Tâche : Raid Faire le donjon expire bientôt");
|
||||
await expect(globalTicker).not.toContainText("Déjà terminée");
|
||||
await expect(globalTicker.locator(".memos-ticker-item.is-task-warning .ui-icon-warning")).toHaveCount(2);
|
||||
|
||||
const planner = page.locator('[data-module-id="planner-one"]');
|
||||
await planner.getByRole("button", { name: "Retirer Urgent planner", exact: true }).click();
|
||||
await page.getByRole("dialog").getByRole("button", { name: "Retirer", exact: true }).click();
|
||||
await expect(planner).toHaveCount(0);
|
||||
await expect(plannerSelect).toHaveValue("");
|
||||
await expect(globalTicker).not.toContainText("Faire le donjon");
|
||||
|
||||
await page.reload();
|
||||
await memos.getByRole("button", { name: "Configuration", exact: true }).click();
|
||||
await expect(plannerSelect).toHaveValue("");
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue