test: cover favorite picker states

This commit is contained in:
wxs
2026-07-17 12:29:20 +08:00
parent 82e81959c0
commit 4c1ccb92db
+48 -3
View File
@@ -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");
});