@@ -23,37 +23,35 @@ func getRepoEditOptionFromRepo(repo *models.Repository) *api.EditRepoOption {
23
23
website := repo .Website
24
24
private := repo .IsPrivate
25
25
hasIssues := false
26
- externalTracker := false
27
- externalTrackerURL := ""
28
- externalTrackerFormat := ""
29
- externalTrackerStyle := ""
30
- enableTimeTracker := false
31
- letOnlyContributorsTrackTime := false
32
- enableIssueDependencies := false
26
+ var internalTracker * api.InternalTracker
27
+ var externalTracker * api.ExternalTracker
33
28
if unit , err := repo .GetUnit (models .UnitTypeIssues ); err == nil {
34
29
config := unit .IssuesConfig ()
35
30
hasIssues = true
36
- enableTimeTracker = config .EnableTimetracker
37
- letOnlyContributorsTrackTime = config .AllowOnlyContributorsToTrackTime
38
- enableIssueDependencies = config .EnableDependencies
31
+ internalTracker = & api.InternalTracker {
32
+ EnableTimeTracker : config .EnableTimetracker ,
33
+ LetOnlyContributorsTrackTime : config .AllowOnlyContributorsToTrackTime ,
34
+ EnableIssueDependencies : config .EnableDependencies ,
35
+ }
39
36
} else if unit , err := repo .GetUnit (models .UnitTypeExternalTracker ); err == nil {
40
37
config := unit .ExternalTrackerConfig ()
41
38
hasIssues = true
42
- externalTracker = true
43
- externalTrackerURL = config .ExternalTrackerURL
44
- externalTrackerFormat = config .ExternalTrackerFormat
45
- externalTrackerStyle = config .ExternalTrackerStyle
39
+ externalTracker = & api.ExternalTracker {
40
+ ExternalTrackerURL : config .ExternalTrackerURL ,
41
+ ExternalTrackerFormat : config .ExternalTrackerFormat ,
42
+ ExternalTrackerStyle : config .ExternalTrackerStyle ,
43
+ }
46
44
}
47
45
hasWiki := false
48
- externalWiki := false
49
- externalWikiURL := ""
46
+ var externalWiki * api.ExternalWiki
50
47
if _ , err := repo .GetUnit (models .UnitTypeWiki ); err == nil {
51
48
hasWiki = true
52
49
} else if unit , err := repo .GetUnit (models .UnitTypeExternalWiki ); err == nil {
53
50
hasWiki = true
54
51
config := unit .ExternalWikiConfig ()
55
- externalWiki = true
56
- externalWikiURL = config .ExternalWikiURL
52
+ externalWiki = & api.ExternalWiki {
53
+ ExternalWikiURL : config .ExternalWikiURL ,
54
+ }
57
55
}
58
56
defaultBranch := repo .DefaultBranch
59
57
hasPullRequests := false
@@ -73,29 +71,23 @@ func getRepoEditOptionFromRepo(repo *models.Repository) *api.EditRepoOption {
73
71
}
74
72
archived := repo .IsArchived
75
73
return & api.EditRepoOption {
76
- Name : & name ,
77
- Description : & description ,
78
- Website : & website ,
79
- Private : & private ,
80
- HasIssues : & hasIssues ,
81
- ExternalTracker : & externalTracker ,
82
- ExternalTrackerURL : & externalTrackerURL ,
83
- ExternalTrackerFormat : & externalTrackerFormat ,
84
- ExternalTrackerStyle : & externalTrackerStyle ,
85
- EnableTimeTracker : & enableTimeTracker ,
86
- LetOnlyContributorsTrackTime : & letOnlyContributorsTrackTime ,
87
- EnableIssueDependencies : & enableIssueDependencies ,
88
- HasWiki : & hasWiki ,
89
- ExternalWiki : & externalWiki ,
90
- ExternalWikiURL : & externalWikiURL ,
91
- DefaultBranch : & defaultBranch ,
92
- HasPullRequests : & hasPullRequests ,
93
- IgnoreWhitespaceConflicts : & ignoreWhitespaceConflicts ,
94
- AllowMerge : & allowMerge ,
95
- AllowRebase : & allowRebase ,
96
- AllowRebaseMerge : & allowRebaseMerge ,
97
- AllowSquash : & allowSquash ,
98
- Archived : & archived ,
74
+ Name : & name ,
75
+ Description : & description ,
76
+ Website : & website ,
77
+ Private : & private ,
78
+ HasIssues : & hasIssues ,
79
+ ExternalTracker : externalTracker ,
80
+ InternalTracker : internalTracker ,
81
+ HasWiki : & hasWiki ,
82
+ ExternalWiki : externalWiki ,
83
+ DefaultBranch : & defaultBranch ,
84
+ HasPullRequests : & hasPullRequests ,
85
+ IgnoreWhitespaceConflicts : & ignoreWhitespaceConflicts ,
86
+ AllowMerge : & allowMerge ,
87
+ AllowRebase : & allowRebase ,
88
+ AllowRebaseMerge : & allowRebaseMerge ,
89
+ AllowSquash : & allowSquash ,
90
+ Archived : & archived ,
99
91
}
100
92
}
101
93
@@ -179,14 +171,13 @@ func TestAPIRepoEdit(t *testing.T) {
179
171
assert .Equal (t , * repoEditOption .HasWiki , * repo1editedOption .HasWiki )
180
172
181
173
//Test editing repo1 to use internal issue and wiki (default)
182
- enableTimeTracker := false
183
- letOnlyContributorsTrackTime := false
184
- enableIssueDependencies := false
185
174
* repoEditOption .HasIssues = true
186
175
repoEditOption .ExternalTracker = nil
187
- repoEditOption .EnableTimeTracker = & enableTimeTracker
188
- repoEditOption .LetOnlyContributorsTrackTime = & letOnlyContributorsTrackTime
189
- repoEditOption .EnableIssueDependencies = & enableIssueDependencies
176
+ repoEditOption .InternalTracker = & api.InternalTracker {
177
+ EnableTimeTracker : false ,
178
+ LetOnlyContributorsTrackTime : false ,
179
+ EnableIssueDependencies : false ,
180
+ }
190
181
* repoEditOption .HasWiki = true
191
182
repoEditOption .ExternalWiki = nil
192
183
url = fmt .Sprintf ("/api/v1/repos/%s/%s?token=%s" , user2 .Name , * repoEditOption .Name , token2 )
@@ -198,25 +189,20 @@ func TestAPIRepoEdit(t *testing.T) {
198
189
repo1edited = models .AssertExistsAndLoadBean (t , & models.Repository {ID : 1 }).(* models.Repository )
199
190
repo1editedOption = getRepoEditOptionFromRepo (repo1edited )
200
191
assert .Equal (t , * repo1editedOption .HasIssues , true )
201
- assert .Equal (t , * repo1editedOption .ExternalTracker , false )
202
- assert .Equal (t , * repo1editedOption .EnableTimeTracker , false )
203
- assert .Equal (t , * repo1editedOption .LetOnlyContributorsTrackTime , false )
204
- assert .Equal (t , * repo1editedOption .EnableIssueDependencies , false )
192
+ assert .Nil (t , repo1editedOption .ExternalTracker )
193
+ assert .Equal (t , * repo1editedOption .InternalTracker , * repoEditOption .InternalTracker )
205
194
assert .Equal (t , * repo1editedOption .HasWiki , true )
206
- assert .Equal (t , * repo1editedOption .ExternalWiki , false )
195
+ assert .Nil (t , repo1editedOption .ExternalWiki )
207
196
208
197
//Test editing repo1 to use external issue and wiki
209
- externalTracker := true
210
- externalURL := "http://www.somewebsite.com"
211
- externalTrackerFormat := "http://www.somewebsite.com/{user}/{repo}?issue={index}"
212
- externalTrackerStyle := "alphanumeric"
213
- externalWiki := true
214
- repoEditOption .ExternalTracker = & externalTracker
215
- repoEditOption .ExternalTrackerURL = & externalURL
216
- repoEditOption .ExternalTrackerFormat = & externalTrackerFormat
217
- repoEditOption .ExternalTrackerStyle = & externalTrackerStyle
218
- repoEditOption .ExternalWiki = & externalWiki
219
- repoEditOption .ExternalWikiURL = & externalURL
198
+ repoEditOption .ExternalTracker = & api.ExternalTracker {
199
+ ExternalTrackerURL : "http://www.somewebsite.com" ,
200
+ ExternalTrackerFormat : "http://www.somewebsite.com/{user}/{repo}?issue={index}" ,
201
+ ExternalTrackerStyle : "alphanumeric" ,
202
+ }
203
+ repoEditOption .ExternalWiki = & api.ExternalWiki {
204
+ ExternalWikiURL : "http://www.somewebsite.com" ,
205
+ }
220
206
req = NewRequestWithJSON (t , "PATCH" , url , & repoEditOption )
221
207
resp = session .MakeRequest (t , req , http .StatusOK )
222
208
DecodeJSON (t , resp , & repo )
@@ -225,35 +211,29 @@ func TestAPIRepoEdit(t *testing.T) {
225
211
repo1edited = models .AssertExistsAndLoadBean (t , & models.Repository {ID : 1 }).(* models.Repository )
226
212
repo1editedOption = getRepoEditOptionFromRepo (repo1edited )
227
213
assert .Equal (t , * repo1editedOption .HasIssues , true )
228
- assert .Equal (t , * repo1editedOption .ExternalTracker , true )
229
- assert .Equal (t , * repo1editedOption .ExternalTrackerURL , * repoEditOption .ExternalTrackerURL )
230
- assert .Equal (t , * repo1editedOption .ExternalTrackerFormat , * repoEditOption .ExternalTrackerFormat )
231
- assert .Equal (t , * repo1editedOption .ExternalTrackerStyle , * repoEditOption .ExternalTrackerStyle )
214
+ assert .Equal (t , * repo1editedOption .ExternalTracker , * repoEditOption .ExternalTracker )
232
215
assert .Equal (t , * repo1editedOption .HasWiki , true )
233
- assert .Equal (t , * repo1editedOption .ExternalWiki , true )
234
- assert .Equal (t , * repo1editedOption .ExternalWikiURL , * repoEditOption .ExternalWikiURL )
216
+ assert .Equal (t , * repo1editedOption .ExternalWiki , * repoEditOption .ExternalWiki )
235
217
236
218
// Do some tests with invalid URL for external tracker and wiki
237
- externalURLInvalid := "htp://www.somewebsite.com"
238
- externalTrackerFormatInvalid := "http://www.somewebsite.com/{user/{repo}?issue={index}"
239
- repoEditOption .ExternalTrackerURL = & externalURLInvalid
219
+ repoEditOption .ExternalTracker .ExternalTrackerURL = "htp://www.somewebsite.com"
240
220
req = NewRequestWithJSON (t , "PATCH" , url , & repoEditOption )
241
221
resp = session .MakeRequest (t , req , http .StatusUnprocessableEntity )
242
- repoEditOption .ExternalTrackerURL = & externalURL
243
- repoEditOption .ExternalTrackerFormat = & externalTrackerFormatInvalid
222
+ repoEditOption .ExternalTracker . ExternalTrackerURL = "http://www.somewebsite.com"
223
+ repoEditOption .ExternalTracker . ExternalTrackerFormat = "http://www.somewebsite.com/{user/{repo}?issue={index}"
244
224
req = NewRequestWithJSON (t , "PATCH" , url , & repoEditOption )
245
225
resp = session .MakeRequest (t , req , http .StatusUnprocessableEntity )
246
- repoEditOption .ExternalTrackerFormat = & externalTrackerFormat
247
- repoEditOption .ExternalWikiURL = & externalURLInvalid
226
+ repoEditOption .ExternalTracker . ExternalTrackerFormat = "http://www.somewebsite.com/{user}/{repo}?issue={index}"
227
+ repoEditOption .ExternalWiki . ExternalWikiURL = "htp://www.somewebsite.com"
248
228
req = NewRequestWithJSON (t , "PATCH" , url , & repoEditOption )
249
229
resp = session .MakeRequest (t , req , http .StatusUnprocessableEntity )
250
230
251
231
//Test small repo change through API with issue and wiki option not set; They shall not be touched.
252
232
* repoEditOption .Description = "small change"
253
233
repoEditOption .HasIssues = nil
254
- * repoEditOption .ExternalTracker = false
234
+ repoEditOption .ExternalTracker = nil
255
235
repoEditOption .HasWiki = nil
256
- * repoEditOption .ExternalWiki = false
236
+ repoEditOption .ExternalWiki = nil
257
237
req = NewRequestWithJSON (t , "PATCH" , url , & repoEditOption )
258
238
resp = session .MakeRequest (t , req , http .StatusOK )
259
239
DecodeJSON (t , resp , & repo )
@@ -263,9 +243,9 @@ func TestAPIRepoEdit(t *testing.T) {
263
243
repo1editedOption = getRepoEditOptionFromRepo (repo1edited )
264
244
assert .Equal (t , * repo1editedOption .Description , * repoEditOption .Description )
265
245
assert .Equal (t , * repo1editedOption .HasIssues , true )
266
- assert .Equal (t , * repo1editedOption .ExternalTracker , true )
246
+ assert .NotNil (t , * repo1editedOption .ExternalTracker )
267
247
assert .Equal (t , * repo1editedOption .HasWiki , true )
268
- assert .Equal (t , * repo1editedOption .ExternalWiki , true )
248
+ assert .NotNil (t , * repo1editedOption .ExternalWiki )
269
249
270
250
// reset repo in db
271
251
url = fmt .Sprintf ("/api/v1/repos/%s/%s?token=%s" , user2 .Name , * repoEditOption .Name , token2 )
0 commit comments