diff --git a/tests/favorite-row-picker.test.ts b/tests/favorite-row-picker.test.ts index 0058565..2689407 100644 --- a/tests/favorite-row-picker.test.ts +++ b/tests/favorite-row-picker.test.ts @@ -106,6 +106,7 @@ describe("favorite-row-picker", () => { ); expect(button.type).toBe("button"); expect(button.title).toBe("加入收藏夹"); + expect(button.getAttribute("aria-label")).toBe("加入收藏夹"); expect(button.dataset.scesFavoriteCount).toBe("0"); expect(button.dataset.scesFavoriteIcon).toBe("bookmark-outline"); }); @@ -117,6 +118,7 @@ describe("favorite-row-picker", () => { const button = readFavoriteButton(actionCell); expect(button.title).toBe("已收藏至 2 个收藏夹"); + expect(button.getAttribute("aria-label")).toBe("已收藏至 2 个收藏夹"); expect(button.dataset.scesFavoriteCount).toBe("2"); expect(button.dataset.scesFavoriteIcon).toBe("bookmark-filled"); }); @@ -146,6 +148,13 @@ describe("favorite-row-picker", () => { ] }); + expect(readFavoriteButton(firstCell).getAttribute("aria-label")).toBe( + "加入收藏夹" + ); + expect(readFavoriteButton(secondCell).getAttribute("aria-label")).toBe( + "加入收藏夹" + ); + readFavoriteButton(firstCell).click(); expect(readPopover()).not.toBeNull(); readFavoriteButton(secondCell).click(); @@ -153,11 +162,37 @@ describe("favorite-row-picker", () => { expect(readPopover()?.textContent).toContain("合作"); }); + test("shows existing folder membership in the picker", () => { + const actionCell = createActionCell(); + + sync({ actionCell, folderIds: [firstFolder.id] }); + readFavoriteButton(actionCell).click(); + + expect( + ( + document.querySelector( + `input[data-sces-favorite-folder-id="${firstFolder.id}"]` + ) as HTMLInputElement + ).checked + ).toBe(true); + expect( + ( + document.querySelector( + `input[data-sces-favorite-folder-id="${secondFolder.id}"]` + ) as HTMLInputElement + ).checked + ).toBe(false); + }); + test("saves the complete checked folder selection for the matching creator", async () => { const actionCell = createActionCell(); const onSetCreatorFolderIds = vi.fn(async () => {}); - sync({ actionCell, onSetCreatorFolderIds }); + sync({ + actionCell, + folderIds: [firstFolder.id], + onSetCreatorFolderIds + }); readFavoriteButton(actionCell).click(); const folderCheckbox = document.querySelector( `input[data-sces-favorite-folder-id="${secondFolder.id}"]` @@ -166,8 +201,11 @@ describe("favorite-row-picker", () => { folderCheckbox.dispatchEvent(new Event("change", { bubbles: true })); await flushAsyncEvents(); - expect(onSetCreatorFolderIds).toHaveBeenCalledWith(createCreator(), [secondFolder.id]); - expect(readFavoriteButton(actionCell).dataset.scesFavoriteCount).toBe("1"); + expect(onSetCreatorFolderIds).toHaveBeenCalledWith(createCreator(), [ + firstFolder.id, + secondFolder.id + ]); + expect(readFavoriteButton(actionCell).dataset.scesFavoriteCount).toBe("2"); }); test("adds a newly created folder to the creator selection", async () => { @@ -186,6 +224,13 @@ describe("favorite-row-picker", () => { expect(onCreateFolder).toHaveBeenCalledTimes(1); expect(onSetCreatorFolderIds).toHaveBeenCalledWith(createCreator(), [createdFolder.id]); + expect( + ( + document.querySelector( + `input[data-sces-favorite-folder-id="${createdFolder.id}"]` + ) as HTMLInputElement + ).checked + ).toBe(true); expect(readFavoriteButton(actionCell).dataset.scesFavoriteCount).toBe("1"); });