Skip to content

Commit 60396d7

Browse files
committed
fix: remove custom & add spinner tests
Signed-off-by: Alexander Mangel <[email protected]>
1 parent 6a65cbd commit 60396d7

File tree

3 files changed

+73
-4
lines changed

3 files changed

+73
-4
lines changed

packages/prompts/src/spinner.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from './common.js';
1212

1313
export interface SpinnerOptions extends CommonOptions {
14-
indicator?: 'dots' | 'timer' | "custom";
14+
indicator?: 'dots' | 'timer';
1515
onCancel?: () => void;
1616
cancelMessage?: string;
1717
errorMessage?: string;
@@ -32,10 +32,9 @@ export const spinner = ({
3232
output = process.stdout,
3333
cancelMessage,
3434
errorMessage,
35-
...props
35+
frames = unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'],
36+
delay = unicode ? 80 : 120,
3637
}: SpinnerOptions = {}): SpinnerResult => {
37-
const frames = props.frames ? props.frames : unicode ? ['◒', '◐', '◓', '◑'] : ['•', 'o', 'O', '0'];
38-
const delay = props.delay ? props.delay : unicode ? 80 : 120;
3938
const isCI = process.env.CI === 'true';
4039

4140
let unblock: () => void;

packages/prompts/test/__snapshots__/spinner.test.ts.snap

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
22

3+
exports[`spinner (isCI = false) > indicator customization > custom delay 1`] = `
4+
[
5+
"[?25l",
6+
"│
7+
",
8+
"◒ ",
9+
"",
10+
"",
11+
"◐ ",
12+
"",
13+
"",
14+
"◓ ",
15+
"",
16+
"",
17+
"◑ ",
18+
]
19+
`;
20+
21+
exports[`spinner (isCI = false) > indicator customization > custom frames 1`] = `
22+
[
23+
"[?25l",
24+
"│
25+
",
26+
"🐴 ",
27+
]
28+
`;
29+
330
exports[`spinner (isCI = false) > message > sets message for next frame 1`] = `
431
[
532
"<cursor.hide>",
@@ -195,6 +222,24 @@ exports[`spinner (isCI = false) > stop > renders submit symbol and stops spinner
195222
]
196223
`;
197224
225+
exports[`spinner (isCI = true) > indicator customization > custom delay 1`] = `
226+
[
227+
"[?25l",
228+
"│
229+
",
230+
"◒ ...",
231+
]
232+
`;
233+
234+
exports[`spinner (isCI = true) > indicator customization > custom frames 1`] = `
235+
[
236+
"[?25l",
237+
"│
238+
",
239+
"🐴 ...",
240+
]
241+
`;
242+
198243
exports[`spinner (isCI = true) > message > sets message for next frame 1`] = `
199244
[
200245
"<cursor.hide>",

packages/prompts/test/spinner.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,31 @@ describe.each(['true', 'false'])('spinner (isCI = %s)', (isCI) => {
149149
});
150150
});
151151

152+
describe('indicator customization', () => {
153+
test('custom frames', () => {
154+
const result = prompts.spinner({ output, frames: ['🐴', '🦋', '🐙', '🐶'] });
155+
156+
result.start();
157+
158+
vi.advanceTimersByTime(80);
159+
160+
expect(output.buffer).toMatchSnapshot();
161+
});
162+
163+
test('custom delay', () => {
164+
const result = prompts.spinner({ output, delay: 200 });
165+
166+
result.start();
167+
168+
// there are 4 frames
169+
for (let i = 0; i < 4; i++) {
170+
vi.advanceTimersByTime(200);
171+
}
172+
173+
expect(output.buffer).toMatchSnapshot();
174+
});
175+
});
176+
152177
describe('process exit handling', () => {
153178
let processEmitter: EventEmitter;
154179

0 commit comments

Comments
 (0)