-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathargv.test.js
More file actions
151 lines (136 loc) · 4.38 KB
/
Copy pathargv.test.js
File metadata and controls
151 lines (136 loc) · 4.38 KB
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
const argv = require('./argv');
const chai = require('chai');
const expect = chai.expect;
chai.should();
describe('argv', () => {
describe('hasOption', () => {
it('should return true if option exists in argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
];
const hasOption = argv.hasOption('--debug');
hasOption.should.equal(true);
});
it('should return false if option does not exist in argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
];
const hasOption = argv.hasOption('--trill');
hasOption.should.equal(false);
});
});
describe('getOption', () => {
it('should return default flag if option is boolean and matches argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.equal('*');
});
it('should return true if option is boolean, matches argv, and default value is not set', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
];
const getOption = argv.getOption('--debug');
getOption.should.equal(true);
});
it('should not return default flag if option is boolean and does not match argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.not.equal('trill');
});
it('should match string if option is string with equal sign and flag matches argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug="trill"',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.equal('"trill"');
});
it('should not match string if option is string with equal sign and flag does not matche argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug="trill"',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.not.equal('"tronic"');
});
it('should match string if option is string with space after flag and flag matches argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
'"trill"',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.equal('"trill"');
});
it('should not match string if option is string with space after flag and flag does not match argv', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
'"trill"',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.not.equal('"tronic"');
});
it('should return default flag if option is boolean, matches argv, and multiple flags are present', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
'--help',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.equal('*');
});
it('should not return next flag if option is boolean, matches argv, and multiple flags are present', () => {
process.argv = [
'node',
'hyperdrive',
'list',
'--debug',
'--help',
];
const getOption = argv.getOption('--debug', {defaultValue: '*'});
getOption.should.not.equal('--help');
});
it('should throw an error as flag is set incorrectly', () => {
expect(() => argv.getOption('--trill', {defaultValue: '*'})).to.throw(Error); // eslint-disable-line max-nested-callbacks
});
it('should throw an error as flag is empty', () => {
expect(() => argv.getOption('')).to.throw(Error); // eslint-disable-line max-nested-callbacks
});
it('should throw an error as flag is undefined', () => {
expect(() => argv.getOption()).to.throw(Error); // eslint-disable-line max-nested-callbacks
});
it('should throw an error as flag is null', () => {
expect(() => argv.getOption(null)).to.throw(Error); // eslint-disable-line max-nested-callbacks
});
});
});