@@ -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