Skip to content

Commit ac202c9

Browse files
committed
test(notes): 过滤面板补装配链透传断言
1 parent 5d4bd4a commit ac202c9

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

‎app/src/components/NoteListToolbar.tagColors.test.tsx‎

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,19 @@
88
* 与 `nativeButtonBaseline.ts`(本件不做棘轮断言 —— 那是棘轮判据件的职责,重复一份会造两套口径)。
99
* @ai-context: 具名断言的变量体 = 「删掉 toolbar 的 `tagColors` 透传」⇒ 有色芯片回落默认灰底,
1010
* 两条断言(等于查色值 / 不等于无色底)同时红。
11+
* @ai-context: ④ 覆盖**本任务新增的那一跳**(`NoteListView` → `NoteListToolbar` 的透传)——
12+
* 只测 toolbar 本体时,把 `NoteListView` 里的 `tagColors={tagColors}` 删掉是**测不出来的**
13+
* (M3 实测:只测本体 ⇒ 变异体静默通过)⇒ 判据必须落在真实装配链上。
1114
*/
1215
import { cleanup, render, screen } from "@testing-library/react";
13-
import { afterEach, describe, expect, it } from "vitest";
16+
import { afterEach, describe, expect, it, vi } from "vitest";
17+
import type { Note } from "../types";
1418
import { paletteHex } from "../utils/colorPalette";
19+
20+
const { invokeMock } = vi.hoisted(() => ({ invokeMock: vi.fn() }));
21+
vi.mock("@tauri-apps/api/core", () => ({ invoke: invokeMock }));
22+
23+
import NoteListView from "./NoteListView";
1524
import NoteListToolbar from "./NoteListToolbar";
1625

1726
afterEach(cleanup);
@@ -69,3 +78,28 @@ describe("NoteListToolbar 过滤芯片着色(批 7 T18 · §C11.3)", () => {
6978
expect(chip.style.color).toBe("rgb(13, 148, 136)");
7079
});
7180
});
81+
82+
describe("NoteListView → NoteListToolbar 的查色表透传(批 7 T18 新增的那一跳)", () => {
83+
it("④ 经真实装配链传 tagColors ⇒ 过滤芯片取到色(删掉这一跳的变异体在这里红)", async () => {
84+
// Arrange:NoteListView 会拉序行(mock 返回空);笔记带一个标签
85+
invokeMock.mockReset();
86+
invokeMock.mockImplementation(async () => []);
87+
const note: Note = {
88+
id: 1, title: "带标签的笔记", content: "", source: "manual", tags: JSON.stringify(["化妆"]),
89+
pin: 0, group_id: null, created_at: 0, updated_at: 0,
90+
};
91+
const listProps = {
92+
notes: [note], groups: [], groupFilter: null, keyword: "", tagFilter: null,
93+
sortMode: "updated-desc" as const, allTags: ["化妆"], selectedId: null, status: "",
94+
noteColors: {}, tagColors: { 化妆: "purple" },
95+
onKeywordChange: () => {}, onTagFilterChange: () => {}, onSortModeChange: () => {},
96+
onSelect: () => {}, onCreate: () => {}, onRefresh: () => {}, onOpenSession: () => {},
97+
onBatchDelete: async () => true,
98+
};
99+
// Act
100+
render(<NoteListView {...listProps} />);
101+
// Assert
102+
const chip = await screen.findByTestId("tag-chip-化妆");
103+
expect(chip.style.background, "NoteListView 没把查色表透到过滤面板").toBe(asRgba(`${paletteHex("purple", "light")}22`));
104+
});
105+
});

0 commit comments

Comments
 (0)