@@ -168,3 +168,139 @@ func Test_defaultBranchForNewTag(t *testing.T) {
168168 })
169169 }
170170}
171+
172+ func Test_validateConfig (t * testing.T ) {
173+ type args struct {
174+ config * notesCmdConfig
175+ }
176+ tests := []struct {
177+ name string
178+ args * notesCmdConfig
179+ wantErr bool
180+ errorMessage string
181+ }{
182+ {
183+ name : "Missing fromRef and newTag" ,
184+ args : & notesCmdConfig {
185+ branch : "main" ,
186+ fromRef : "" ,
187+ newTag : "" ,
188+ },
189+ wantErr : true ,
190+ errorMessage : "at least one of --from or --release need to be set" ,
191+ },
192+ {
193+ name : "Missing branch and newTag" ,
194+ args : & notesCmdConfig {
195+ fromRef : "ref1/tags" ,
196+ branch : "" ,
197+ newTag : "" ,
198+ },
199+ wantErr : true ,
200+ errorMessage : "at least one of --branch or --release need to be set" ,
201+ },
202+ {
203+ name : "Invalid fromRef" ,
204+ args : & notesCmdConfig {
205+ fromRef : "invalid" ,
206+ branch : "main" ,
207+ },
208+ wantErr : true ,
209+ errorMessage : "invalid ref invalid: must follow [type]/[value]" ,
210+ },
211+ {
212+ name : "Invalid toRef" ,
213+ args : & notesCmdConfig {
214+ toRef : "invalid" ,
215+ branch : "main" ,
216+ fromRef : "ref1/tags" ,
217+ },
218+ wantErr : true ,
219+ errorMessage : "invalid ref invalid: must follow [type]/[value]" ,
220+ },
221+ {
222+ name : "Valid fromRef, toRef, and newTag" ,
223+ args : & notesCmdConfig {
224+ fromRef : "ref1/tags" ,
225+ toRef : "ref2/tags" ,
226+ newTag : "v1.0.0" ,
227+ },
228+ wantErr : false ,
229+ },
230+ }
231+ for _ , tt := range tests {
232+ t .Run (tt .name , func (t * testing.T ) {
233+ err := validateConfig (tt .args )
234+ if tt .wantErr {
235+ if err == nil || err .Error () != tt .errorMessage {
236+ t .Errorf ("expected error '%s', got '%v'" , tt .errorMessage , err )
237+ }
238+ } else if err != nil {
239+ t .Errorf ("unexpected error: %v" , err )
240+ }
241+ })
242+ }
243+ }
244+
245+ func Test_computeConfigDefaults (t * testing.T ) {
246+ type args struct {
247+ config * notesCmdConfig
248+ }
249+ tests := []struct {
250+ name string
251+ args * notesCmdConfig
252+ want * notesCmdConfig
253+ wantErr bool
254+ }{
255+ {
256+ name : "New minor release, fromRef missing" ,
257+ args : & notesCmdConfig {
258+ branch : "develop" ,
259+ newTag : "v1.1.0" ,
260+ },
261+ want : & notesCmdConfig {
262+ fromRef : "tags/v1.0.0" ,
263+ branch : "develop" ,
264+ toRef : "heads/develop" ,
265+ newTag : "v1.1.0" ,
266+ },
267+ wantErr : false ,
268+ },
269+ {
270+ name : "New patch release, fromRef missing" ,
271+ args : & notesCmdConfig {
272+ newTag : "v1.1.3" ,
273+ },
274+ want : & notesCmdConfig {
275+ fromRef : "tags/v1.1.2" ,
276+ branch : "release-1.1" ,
277+ toRef : "heads/release-1.1" ,
278+ newTag : "v1.1.3" ,
279+ },
280+ wantErr : false ,
281+ },
282+ {
283+ name : "Invalid semver" ,
284+ args : & notesCmdConfig {
285+ newTag : "invalid-tag" ,
286+ },
287+ want : nil ,
288+ wantErr : true ,
289+ },
290+ }
291+ for _ , tt := range tests {
292+ t .Run (tt .name , func (t * testing.T ) {
293+ err := computeConfigDefaults (tt .args )
294+ g := NewWithT (t )
295+ if tt .wantErr {
296+ g .Expect (err ).To (HaveOccurred ())
297+ g .Expect (err .Error ()).To (ContainSubstring ("invalid --release, is not a semver:" ))
298+ } else {
299+ g .Expect (err ).ToNot (HaveOccurred ())
300+ g .Expect (tt .args .fromRef ).To (Equal (tt .want .fromRef ))
301+ g .Expect (tt .args .branch ).To (Equal (tt .want .branch ))
302+ g .Expect (tt .args .toRef ).To (Equal (tt .want .toRef ))
303+ }
304+ })
305+ }
306+ }
0 commit comments