


























@@ -1,50 +1,48 @@
1-import { beforeEach, describe, expect, it, vi } from "vitest";
2-3-const { selectMock, stylePromptMessageMock, stylePromptHintMock } = vi.hoisted(() => ({
4-selectMock: vi.fn(),
5-stylePromptMessageMock: vi.fn((value: string) => `msg:${value}`),
6-stylePromptHintMock: vi.fn((value: string) => `hint:${value}`),
7-}));
8-9-vi.mock("@clack/prompts", () => ({
10-select: selectMock,
11-}));
12-13-vi.mock("./prompt-style.js", () => ({
14-stylePromptMessage: stylePromptMessageMock,
15-stylePromptHint: stylePromptHintMock,
16-}));
17-18-import { selectStyled } from "./prompt-select-styled.js";
19-20-describe("selectStyled", () => {
21-beforeEach(() => {
22-selectMock.mockClear();
23-stylePromptMessageMock.mockClear();
24-stylePromptHintMock.mockClear();
25-});
26-27-it("styles message and option hints before delegating to clack select", () => {
28-const expected = Symbol("selected");
29-selectMock.mockReturnValue(expected);
30-31-const result = selectStyled({
32-message: "Pick channel",
1+import { describe, expect, it } from "vitest";
2+import { styleSelectParams } from "./prompt-select-styled-params.js";
3+4+describe("styleSelectParams", () => {
5+it("styles message and option hints before select receives params", () => {
6+expect(
7+styleSelectParams(
8+{
9+message: "Pick channel",
10+options: [
11+{ value: "stable", label: "Stable", hint: "Tagged releases" },
12+{ value: "dev", label: "Dev" },
13+],
14+},
15+{
16+message: (value) => `msg:${value}`,
17+hint: (value) => `hint:${value}`,
18+},
19+),
20+).toEqual({
21+message: "msg:Pick channel",
3322options: [
34-{ value: "stable", label: "Stable", hint: "Tagged releases" },
23+{ value: "stable", label: "Stable", hint: "hint:Tagged releases" },
3524{ value: "dev", label: "Dev" },
3625],
3726});
27+});
382839-expect(result).toBe(expected);
40-expect(stylePromptMessageMock).toHaveBeenCalledWith("Pick channel");
41-expect(stylePromptHintMock).toHaveBeenCalledWith("Tagged releases");
42-expect(selectMock).toHaveBeenCalledWith({
29+it("keeps unhinted options unchanged", () => {
30+const option = { value: "dev", label: "Dev" };
31+const params = styleSelectParams(
32+{
33+message: "Pick channel",
34+options: [option],
35+},
36+{
37+message: (value) => `msg:${value}`,
38+hint: (value) => `hint:${value}`,
39+},
40+);
41+42+expect(params).toEqual({
4343message: "msg:Pick channel",
44-options: [
45-{ value: "stable", label: "Stable", hint: "hint:Tagged releases" },
46-{ value: "dev", label: "Dev" },
47-],
44+options: [{ value: "dev", label: "Dev" }],
4845});
46+expect(params.options[0]).toBe(option);
4947});
5048});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。