3
3
* @module grease/cli/commands/tests/functional/BumpCommand
4
4
*/
5
5
6
+ import { RecommendedBump } from '#src/bump'
6
7
import { ReleaseType } from '#src/enums'
7
8
import GreaseService from '#src/grease.service'
9
+ import { LogObject , LoggerService } from '#src/log'
10
+ import { Version } from '#src/models'
8
11
import type { ReleaseVersion } from '#src/types'
9
12
import type { Mock } from '#tests/interfaces'
10
13
import { CliUtilityService } from '@flex-development/nest-commander'
11
14
import { CommandTestFactory } from '@flex-development/nest-commander/testing'
12
15
import type { TestingModule } from '@nestjs/testing'
13
16
import TestSubject from '../bump.command'
17
+ import GreaseCommand from '../grease.command'
14
18
15
19
describe ( 'functional:cli/commands/BumpCommand' , ( ) => {
16
20
let args : [ 'bump' , ReleaseVersion ]
17
21
let bump : Mock < GreaseService [ 'bump' ] >
18
22
let command : TestingModule
23
+ let debug : Mock < LoggerService [ 'debug' ] >
24
+ let log : Mock < LoggerService [ 'log' ] >
19
25
let recommend : Mock < GreaseService [ 'recommend' ] >
26
+ let success : Mock < LoggerService [ 'success' ] >
20
27
21
28
beforeAll ( ( ) => {
22
29
args = [ 'bump' , ReleaseType . PREMAJOR ]
23
30
} )
24
31
25
32
beforeEach ( async ( ) => {
26
33
command = await CommandTestFactory . createTestingCommand ( {
34
+ positional : false ,
27
35
providers : [
28
36
CliUtilityService ,
37
+ GreaseCommand ,
38
+ LoggerService ,
29
39
TestSubject ,
30
40
{
31
41
provide : GreaseService ,
32
42
useValue : {
33
- bump : bump = vi . fn ( ) . mockName ( 'GreaseService#bump' ) ,
34
- recommend : recommend = vi . fn ( ) . mockName ( 'GreaseService#recommend' )
43
+ bump : bump = vi
44
+ . fn ( )
45
+ . mockReturnValue ( new Version ( faker . system . semver ( ) ) )
46
+ . mockName ( 'GreaseService#bump' ) ,
47
+ config : vi
48
+ . fn ( )
49
+ . mockReturnValue ( { } )
50
+ . mockName ( 'GreaseService#config' ) ,
51
+ recommend : recommend = vi
52
+ . fn ( )
53
+ . mockReturnValue ( new RecommendedBump ( {
54
+ breaks : 1 ,
55
+ commits : 72 ,
56
+ features : 16 ,
57
+ unstable : true
58
+ } ) )
59
+ . mockName ( 'GreaseService#recommend' )
60
+ }
61
+ } ,
62
+ {
63
+ provide : LoggerService ,
64
+ useValue : {
65
+ debug : debug = vi . fn ( ) . mockName ( 'LoggerService#debug' ) ,
66
+ log : log = vi . fn ( ) . mockName ( 'LoggerService#log' ) ,
67
+ success : success = vi . fn ( ) . mockName ( 'LoggerService#success' ) ,
68
+ withTag : vi . fn ( ) . mockReturnValue ( {
69
+ debug,
70
+ log,
71
+ success,
72
+ sync : vi . fn ( ) . mockName ( 'LoggerService#sync' )
73
+ } )
35
74
}
36
75
}
37
76
]
38
77
} )
39
78
} )
40
79
80
+ describe ( '--json, -j' , ( ) => {
81
+ it ( 'should parse flag' , async ( ) => {
82
+ // Act
83
+ await CommandTestFactory . run ( command , [ ...args , '--json' ] )
84
+
85
+ // Expect
86
+ expect ( log ) . toHaveBeenCalledOnce ( )
87
+ expect ( log ) . toHaveBeenCalledWith ( expect . any ( LogObject ) )
88
+ expect ( debug ) . not . toHaveBeenCalled ( )
89
+ expect ( success ) . not . toHaveBeenCalled ( )
90
+ } )
91
+
92
+ it ( 'should parse short flag' , async ( ) => {
93
+ // Act
94
+ await CommandTestFactory . run ( command , [ ...args , '-j' ] )
95
+
96
+ // Expect
97
+ expect ( log ) . toHaveBeenCalledOnce ( )
98
+ expect ( log ) . toHaveBeenCalledWith ( expect . any ( LogObject ) )
99
+ expect ( debug ) . not . toHaveBeenCalled ( )
100
+ expect ( success ) . not . toHaveBeenCalled ( )
101
+ } )
102
+ } )
103
+
41
104
describe ( '--preid <id>' , ( ) => {
42
105
let preid : string
43
106
@@ -52,6 +115,9 @@ describe('functional:cli/commands/BumpCommand', () => {
52
115
// Expect
53
116
expect ( bump ) . toHaveBeenCalledOnce ( )
54
117
expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'preid' , preid )
118
+ expect ( success ) . toHaveBeenCalledOnce ( )
119
+ expect ( debug ) . not . toHaveBeenCalled ( )
120
+ expect ( log ) . not . toHaveBeenCalled ( )
55
121
} )
56
122
} )
57
123
@@ -69,6 +135,9 @@ describe('functional:cli/commands/BumpCommand', () => {
69
135
// Expect
70
136
expect ( bump ) . toHaveBeenCalledOnce ( )
71
137
expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'prestart' , prestart )
138
+ expect ( success ) . toHaveBeenCalledOnce ( )
139
+ expect ( debug ) . not . toHaveBeenCalled ( )
140
+ expect ( log ) . not . toHaveBeenCalled ( )
72
141
} )
73
142
} )
74
143
@@ -80,6 +149,9 @@ describe('functional:cli/commands/BumpCommand', () => {
80
149
// Expect
81
150
expect ( recommend ) . toHaveBeenCalledOnce ( )
82
151
expect ( recommend ) . toHaveBeenCalledWith ( expect . any ( Object ) )
152
+ expect ( log ) . toHaveBeenCalledOnce ( )
153
+ expect ( debug ) . toHaveBeenCalledTimes ( 3 )
154
+ expect ( success ) . not . toHaveBeenCalled ( )
83
155
} )
84
156
85
157
it ( 'should parse short flag' , async ( ) => {
@@ -89,26 +161,61 @@ describe('functional:cli/commands/BumpCommand', () => {
89
161
// Expect
90
162
expect ( recommend ) . toHaveBeenCalledOnce ( )
91
163
expect ( recommend ) . toHaveBeenCalledWith ( expect . any ( Object ) )
164
+ expect ( log ) . toHaveBeenCalledOnce ( )
165
+ expect ( debug ) . toHaveBeenCalledTimes ( 3 )
166
+ expect ( success ) . not . toHaveBeenCalled ( )
167
+ } )
168
+ } )
169
+
170
+ describe ( '--unstable, -u' , ( ) => {
171
+ it ( 'should parse flag' , async ( ) => {
172
+ // Act
173
+ await CommandTestFactory . run ( command , [ args [ 0 ] , '-r' , '--unstable' ] )
174
+
175
+ // Expect
176
+ expect ( recommend ) . toHaveBeenCalledOnce ( )
177
+ expect ( recommend . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'unstable' ) . be . true
178
+ expect ( log ) . toHaveBeenCalledOnce ( )
179
+ expect ( debug ) . toHaveBeenCalledTimes ( 3 )
180
+ expect ( success ) . not . toHaveBeenCalled ( )
181
+ } )
182
+
183
+ it ( 'should parse short flag' , async ( ) => {
184
+ // Act
185
+ await CommandTestFactory . run ( command , [ args [ 0 ] , '-r' , '-u' ] )
186
+
187
+ // Expect
188
+ expect ( recommend ) . toHaveBeenCalledOnce ( )
189
+ expect ( recommend . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'unstable' ) . be . true
190
+ expect ( log ) . toHaveBeenCalledOnce ( )
191
+ expect ( debug ) . toHaveBeenCalledTimes ( 3 )
192
+ expect ( success ) . not . toHaveBeenCalled ( )
92
193
} )
93
194
} )
94
195
95
- describe ( '--write, -w [choice] ' , ( ) => {
196
+ describe ( '--write, -w' , ( ) => {
96
197
it ( 'should parse flag' , async ( ) => {
97
198
// Act
98
199
await CommandTestFactory . run ( command , [ ...args , '--write' ] )
99
200
100
201
// Expect
101
202
expect ( bump ) . toHaveBeenCalledOnce ( )
102
- expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'write' , true )
203
+ expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'write' ) . be . true
204
+ expect ( success ) . toHaveBeenCalledOnce ( )
205
+ expect ( debug ) . not . toHaveBeenCalled ( )
206
+ expect ( log ) . not . toHaveBeenCalled ( )
103
207
} )
104
208
105
209
it ( 'should parse short flag' , async ( ) => {
106
210
// Act
107
- await CommandTestFactory . run ( command , [ ...args , '-w' , 'n' ] )
211
+ await CommandTestFactory . run ( command , [ ...args , '-w' ] )
108
212
109
213
// Expect
110
214
expect ( bump ) . toHaveBeenCalledOnce ( )
111
- expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'write' , false )
215
+ expect ( bump . mock . lastCall ?. [ 0 ] ) . to . have . property ( 'write' ) . be . true
216
+ expect ( success ) . toHaveBeenCalledOnce ( )
217
+ expect ( debug ) . not . toHaveBeenCalled ( )
218
+ expect ( log ) . not . toHaveBeenCalled ( )
112
219
} )
113
220
} )
114
221
} )
0 commit comments