From 4fddf34a732d7c3f91b2a0963fc5f8c31df031aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Fri, 4 Jul 2025 16:22:27 +0200 Subject: [PATCH] :bug: Fix error when there exists a tokens lib with no sets --- frontend/playwright/ui/specs/tokens.spec.js | 17 +++++++++++++++++ .../main/ui/workspace/tokens/management.cljs | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/frontend/playwright/ui/specs/tokens.spec.js b/frontend/playwright/ui/specs/tokens.spec.js index e108c3025f..a5b24ff3c2 100644 --- a/frontend/playwright/ui/specs/tokens.spec.js +++ b/frontend/playwright/ui/specs/tokens.spec.js @@ -529,6 +529,14 @@ test.describe("Tokens: Sets Tab", () => { await changeSetInput(sidebar, setName, (finalKey = "Enter")); }; + const assertEmptySetsList = async (el) => { + const buttons = await el.getByRole("button").allTextContents(); + const filteredButtons = buttons.filter( + (text) => text === "Create one.", + ); + await expect(filteredButtons.length).toEqual(2); // We assume there are no themes, so we have two "Create one" buttons. + }; + const assertSetsList = async (el, sets) => { const buttons = await el.getByRole("button").allTextContents(); const filteredButtons = buttons.filter( @@ -623,6 +631,15 @@ test.describe("Tokens: Sets Tab", () => { "sizes", "small", ]); + + // User deletes all sets + await tokenThemesSetsSidebar + .getByRole("button", { name: "core" }) + .click({ button: "right" }); + await expect(tokenContextMenuForSet).toBeVisible(); + await tokenContextMenuForSet.getByText("Delete").click(); + + await assertEmptySetsList(tokenThemesSetsSidebar); }); test("User can create & edit sets and set groups with an identical name", async ({ diff --git a/frontend/src/app/main/ui/workspace/tokens/management.cljs b/frontend/src/app/main/ui/workspace/tokens/management.cljs index 63ddb45c2a..df543889f2 100644 --- a/frontend/src/app/main/ui/workspace/tokens/management.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/management.cljs @@ -123,9 +123,9 @@ (and selected-token-set-name (not (ctob/get-set tokens-lib selected-token-set-name))))) (let [match (->> (ctob/get-sets tokens-lib) - (first) - (ctob/get-name))] - (st/emit! (dwtl/set-selected-token-set-name match))))) + (first))] + (when match + (st/emit! (dwtl/set-selected-token-set-name (ctob/get-name match))))))) [:* [:& token-context-menu]