forked from tj/commander.js
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
commander.configureCommand.test.js
87 lines (75 loc) · 2.68 KB
/
commander.configureCommand.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const commander = require('../');
// Mostly testing direct on program, limited check that (sub)command working same.
// Default behaviours
test('when default then options stored on command', () => {
const program = new commander.Command();
program
.option('--foo <value>', 'description');
program.parse(['node', 'test', '--foo', 'bar']);
expect(program.foo).toBe('bar');
});
test('when default then command passed to action', () => {
const program = new commander.Command();
const callback = jest.fn();
program
.arguments('<value>')
.action(callback);
program.parse(['node', 'test', 'value']);
expect(callback).toHaveBeenCalledWith('value', program, program);
});
// storeOptionsAsProperties
test('when storeOptionsAsProperties() then options stored on command', () => {
const program = new commander.Command();
program
.storeOptionsAsProperties()
.option('--foo <value>', 'description');
program.parse(['node', 'test', '--foo', 'bar']);
expect(program.foo).toBe('bar');
});
test('when storeOptionsAsProperties(true) then options stored on command', () => {
const program = new commander.Command();
program
.storeOptionsAsProperties(true)
.option('--foo <value>', 'description');
program.parse(['node', 'test', '--foo', 'bar']);
expect(program.foo).toBe('bar');
});
test('when storeOptionsAsProperties(false) then options not stored on command', () => {
const program = new commander.Command();
program
.storeOptionsAsProperties(false)
.option('--foo <value>', 'description');
program.parse(['node', 'test', '--foo', 'bar']);
expect(program.foo).toBeUndefined();
});
// passCommandToAction
test('when passCommandToAction() then command passed to action', () => {
const program = new commander.Command();
const callback = jest.fn();
program
.passCommandToAction()
.arguments('<value>')
.action(callback);
program.parse(['node', 'test', 'value']);
expect(callback).toHaveBeenCalledWith('value', program, program);
});
test('when passCommandToAction(true) then command passed to action', () => {
const program = new commander.Command();
const callback = jest.fn();
program
.passCommandToAction(true)
.arguments('<value>')
.action(callback);
program.parse(['node', 'test', 'value']);
expect(callback).toHaveBeenCalledWith('value', program, program);
});
test('when passCommandToAction(false) then options passed to action', () => {
const program = new commander.Command();
const callback = jest.fn();
program
.passCommandToAction(false)
.arguments('<value>')
.action(callback);
program.parse(['node', 'test', 'value']);
expect(callback).toHaveBeenCalledWith('value', program.opts(), program);
});