Skip to content

Commit 81ae35a

Browse files
GiteaBotlng2020CaiCandong
authored
Fix review request number and add more tests (#27104) (#27168)
Backport #27104 by @lng2020 fix #27019 ## testfixture yml 1. add issue20(a pr issue) in repo 23, org 17 2. add user15 to team 9 3. add four reviews about issue20 ## test case add two tests that are described with code comments the code before pr #26784 failed the first test <img width="479" alt="image" src="https://github.com/go-gitea/gitea/assets/70063547/1d9b5787-11b4-4c4d-931f-6a9869547f35"> current code failed the second test(as mentioned in #27019) <img width="484" alt="image" src="https://github.com/go-gitea/gitea/assets/70063547/05608055-7587-43d1-bae1-92c688270819"> Any advice is appreciated. Co-authored-by: Nanguan Lin <[email protected]> Co-authored-by: CaiCandong <[email protected]>
1 parent 2e49a4d commit 81ae35a

File tree

12 files changed

+115
-23
lines changed

12 files changed

+115
-23
lines changed

models/fixtures/issue.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,3 +321,20 @@
321321
created_unix: 946684830
322322
updated_unix: 978307200
323323
is_locked: false
324+
325+
-
326+
id: 20
327+
repo_id: 23
328+
index: 1
329+
poster_id: 2
330+
original_author_id: 0
331+
name: issue for pr
332+
content: content
333+
milestone_id: 0
334+
priority: 0
335+
is_closed: false
336+
is_pull: true
337+
num_comments: 0
338+
created_unix: 978307210
339+
updated_unix: 978307210
340+
is_locked: false

models/fixtures/pull_request.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,12 @@
8989
base_branch: main
9090
merge_base: cbff181af4c9c7fee3cf6c106699e07d9a3f54e6
9191
has_merged: false
92+
93+
-
94+
id: 8
95+
type: 0 # gitea pull request
96+
status: 2 # mergable
97+
issue_id: 20
98+
index: 1
99+
head_repo_id: 23
100+
base_repo_id: 23

models/fixtures/repository.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@
679679
num_forks: 0
680680
num_issues: 0
681681
num_closed_issues: 0
682-
num_pulls: 0
682+
num_pulls: 1
683683
num_closed_pulls: 0
684684
num_milestones: 0
685685
num_closed_milestones: 0

models/fixtures/review.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,3 +132,41 @@
132132
content: "singular review from org6 and final review for this pr"
133133
updated_unix: 946684831
134134
created_unix: 946684831
135+
136+
-
137+
id: 16
138+
type: 4
139+
reviewer_id: 20
140+
issue_id: 20
141+
content: "review request for user20"
142+
updated_unix: 946684832
143+
created_unix: 946684832
144+
145+
-
146+
id: 17
147+
type: 1
148+
reviewer_id: 20
149+
issue_id: 20
150+
content: "review approved by user20"
151+
updated_unix: 946684833
152+
created_unix: 946684833
153+
-
154+
id: 18
155+
type: 4
156+
reviewer_id: 0
157+
reviewer_team_id: 5
158+
issue_id: 20
159+
content: "review request for team5"
160+
updated_unix: 946684834
161+
created_unix: 946684834
162+
163+
-
164+
id: 19
165+
type: 4
166+
reviewer_id: 15
167+
reviewer_team_id: 0
168+
issue_id: 20
169+
content: "review request for user15"
170+
updated_unix: 946684835
171+
created_unix: 946684835
172+

models/fixtures/team.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
name: review_team
9494
authorize: 1 # read
9595
num_repos: 1
96-
num_members: 2
96+
num_members: 3
9797
includes_all_repositories: false
9898
can_create_org_repo: false
9999

models/fixtures/team_user.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,3 +123,9 @@
123123
org_id: 36
124124
team_id: 20
125125
uid: 5
126+
127+
-
128+
id: 22
129+
org_id: 17
130+
team_id: 9
131+
uid: 15

models/issues/issue_search.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,14 +362,21 @@ func applyReviewRequestedCondition(sess *xorm.Session, reviewRequestedID int64)
362362
From("team_user").
363363
Where(builder.Eq{"team_user.uid": reviewRequestedID})
364364

365+
// if the review is approved or rejected, it should not be shown in the review requested list
366+
maxReview := builder.Select("MAX(r.id)").
367+
From("review as r").
368+
Where(builder.In("r.type", []ReviewType{ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest})).
369+
GroupBy("r.issue_id, r.reviewer_id, r.reviewer_team_id")
370+
365371
subQuery := builder.Select("review.issue_id").
366372
From("review").
367373
Where(builder.And(
368-
builder.In("review.type", []ReviewType{ReviewTypeRequest, ReviewTypeReject, ReviewTypeApprove}),
374+
builder.Eq{"review.type": ReviewTypeRequest},
369375
builder.Or(
370376
builder.Eq{"review.reviewer_id": reviewRequestedID},
371377
builder.In("review.reviewer_team_id", existInTeamQuery),
372378
),
379+
builder.In("review.id", maxReview),
373380
))
374381
return sess.Where("issue.poster_id <> ?", reviewRequestedID).
375382
And(builder.In("issue.id", subQuery))

models/issues/issue_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ func TestCountIssues(t *testing.T) {
403403
assert.NoError(t, unittest.PrepareTestDatabase())
404404
count, err := issues_model.CountIssues(db.DefaultContext, &issues_model.IssuesOptions{})
405405
assert.NoError(t, err)
406-
assert.EqualValues(t, 19, count)
406+
assert.EqualValues(t, 20, count)
407407
}
408408

409409
func TestIssueLoadAttributes(t *testing.T) {

modules/indexer/issues/indexer_test.go

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,21 @@ func searchIssueByID(t *testing.T) {
180180
},
181181
[]int64{11, 6, 5, 3, 2, 1},
182182
},
183+
{
184+
// issue 20 request user 15 and team 5 which user 15 belongs to
185+
// the review request number of issue 20 should be 1
186+
SearchOptions{
187+
ReviewRequestedID: int64Pointer(15),
188+
},
189+
[]int64{12, 20},
190+
},
191+
{
192+
// user 20 approved the issue 20, so return nothing
193+
SearchOptions{
194+
ReviewRequestedID: int64Pointer(20),
195+
},
196+
[]int64{},
197+
},
183198
}
184199

185200
for _, test := range tests {
@@ -206,7 +221,7 @@ func searchIssueIsPull(t *testing.T) {
206221
SearchOptions{
207222
IsPull: util.OptionalBoolTrue,
208223
},
209-
[]int64{12, 11, 19, 9, 8, 3, 2},
224+
[]int64{12, 11, 20, 19, 9, 8, 3, 2},
210225
},
211226
}
212227
for _, test := range tests {
@@ -227,7 +242,7 @@ func searchIssueIsClosed(t *testing.T) {
227242
SearchOptions{
228243
IsClosed: util.OptionalBoolFalse,
229244
},
230-
[]int64{17, 16, 15, 14, 13, 12, 11, 6, 19, 18, 10, 7, 9, 8, 3, 2, 1},
245+
[]int64{17, 16, 15, 14, 13, 12, 11, 20, 6, 19, 18, 10, 7, 9, 8, 3, 2, 1},
231246
},
232247
{
233248
SearchOptions{
@@ -293,7 +308,7 @@ func searchIssueByLabelID(t *testing.T) {
293308
SearchOptions{
294309
ExcludedLabelIDs: []int64{1},
295310
},
296-
[]int64{17, 16, 15, 14, 13, 12, 11, 6, 5, 19, 18, 10, 7, 4, 9, 8, 3},
311+
[]int64{17, 16, 15, 14, 13, 12, 11, 20, 6, 5, 19, 18, 10, 7, 4, 9, 8, 3},
297312
},
298313
}
299314
for _, test := range tests {
@@ -317,7 +332,7 @@ func searchIssueByTime(t *testing.T) {
317332
SearchOptions{
318333
UpdatedAfterUnix: int64Pointer(0),
319334
},
320-
[]int64{17, 16, 15, 14, 13, 12, 11, 6, 5, 19, 18, 10, 7, 4, 9, 8, 3, 2, 1},
335+
[]int64{17, 16, 15, 14, 13, 12, 11, 20, 6, 5, 19, 18, 10, 7, 4, 9, 8, 3, 2, 1},
321336
},
322337
}
323338
for _, test := range tests {
@@ -338,7 +353,7 @@ func searchIssueWithOrder(t *testing.T) {
338353
SearchOptions{
339354
SortBy: internal.SortByCreatedAsc,
340355
},
341-
[]int64{1, 2, 3, 8, 9, 4, 7, 10, 18, 19, 5, 6, 11, 12, 13, 14, 15, 16, 17},
356+
[]int64{1, 2, 3, 8, 9, 4, 7, 10, 18, 19, 5, 6, 20, 11, 12, 13, 14, 15, 16, 17},
342357
},
343358
}
344359
for _, test := range tests {
@@ -393,7 +408,7 @@ func searchIssueWithPaginator(t *testing.T) {
393408
},
394409
},
395410
[]int64{17, 16, 15, 14, 13},
396-
19,
411+
20,
397412
},
398413
}
399414
for _, test := range tests {

tests/integration/api_issue_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ func TestAPISearchIssues(t *testing.T) {
219219
token := getUserToken(t, "user2", auth_model.AccessTokenScopeReadIssue)
220220

221221
// as this API was used in the frontend, it uses UI page size
222-
expectedIssueCount := 17 // from the fixtures
222+
expectedIssueCount := 18 // from the fixtures
223223
if expectedIssueCount > setting.UI.IssuePagingNum {
224224
expectedIssueCount = setting.UI.IssuePagingNum
225225
}
@@ -243,7 +243,7 @@ func TestAPISearchIssues(t *testing.T) {
243243
req = NewRequest(t, "GET", link.String())
244244
resp = MakeRequest(t, req, http.StatusOK)
245245
DecodeJSON(t, resp, &apiIssues)
246-
assert.Len(t, apiIssues, 10)
246+
assert.Len(t, apiIssues, 11)
247247
query.Del("since")
248248
query.Del("before")
249249

@@ -259,15 +259,15 @@ func TestAPISearchIssues(t *testing.T) {
259259
req = NewRequest(t, "GET", link.String())
260260
resp = MakeRequest(t, req, http.StatusOK)
261261
DecodeJSON(t, resp, &apiIssues)
262-
assert.EqualValues(t, "19", resp.Header().Get("X-Total-Count"))
263-
assert.Len(t, apiIssues, 19)
262+
assert.EqualValues(t, "20", resp.Header().Get("X-Total-Count"))
263+
assert.Len(t, apiIssues, 20)
264264

265265
query.Add("limit", "10")
266266
link.RawQuery = query.Encode()
267267
req = NewRequest(t, "GET", link.String())
268268
resp = MakeRequest(t, req, http.StatusOK)
269269
DecodeJSON(t, resp, &apiIssues)
270-
assert.EqualValues(t, "19", resp.Header().Get("X-Total-Count"))
270+
assert.EqualValues(t, "20", resp.Header().Get("X-Total-Count"))
271271
assert.Len(t, apiIssues, 10)
272272

273273
query = url.Values{"assigned": {"true"}, "state": {"all"}, "token": {token}}
@@ -317,7 +317,7 @@ func TestAPISearchIssuesWithLabels(t *testing.T) {
317317
defer tests.PrepareTestEnv(t)()
318318

319319
// as this API was used in the frontend, it uses UI page size
320-
expectedIssueCount := 17 // from the fixtures
320+
expectedIssueCount := 18 // from the fixtures
321321
if expectedIssueCount > setting.UI.IssuePagingNum {
322322
expectedIssueCount = setting.UI.IssuePagingNum
323323
}

tests/integration/api_nodeinfo_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestNodeinfo(t *testing.T) {
3333
assert.True(t, nodeinfo.OpenRegistrations)
3434
assert.Equal(t, "gitea", nodeinfo.Software.Name)
3535
assert.Equal(t, 25, nodeinfo.Usage.Users.Total)
36-
assert.Equal(t, 19, nodeinfo.Usage.LocalPosts)
36+
assert.Equal(t, 20, nodeinfo.Usage.LocalPosts)
3737
assert.Equal(t, 2, nodeinfo.Usage.LocalComments)
3838
})
3939
}

tests/integration/issue_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ func TestSearchIssues(t *testing.T) {
356356

357357
session := loginUser(t, "user2")
358358

359-
expectedIssueCount := 17 // from the fixtures
359+
expectedIssueCount := 18 // from the fixtures
360360
if expectedIssueCount > setting.UI.IssuePagingNum {
361361
expectedIssueCount = setting.UI.IssuePagingNum
362362
}
@@ -377,7 +377,7 @@ func TestSearchIssues(t *testing.T) {
377377
req = NewRequest(t, "GET", link.String())
378378
resp = session.MakeRequest(t, req, http.StatusOK)
379379
DecodeJSON(t, resp, &apiIssues)
380-
assert.Len(t, apiIssues, 10)
380+
assert.Len(t, apiIssues, 11)
381381
query.Del("since")
382382
query.Del("before")
383383

@@ -393,15 +393,15 @@ func TestSearchIssues(t *testing.T) {
393393
req = NewRequest(t, "GET", link.String())
394394
resp = session.MakeRequest(t, req, http.StatusOK)
395395
DecodeJSON(t, resp, &apiIssues)
396-
assert.EqualValues(t, "19", resp.Header().Get("X-Total-Count"))
397-
assert.Len(t, apiIssues, 19)
396+
assert.EqualValues(t, "20", resp.Header().Get("X-Total-Count"))
397+
assert.Len(t, apiIssues, 20)
398398

399399
query.Add("limit", "5")
400400
link.RawQuery = query.Encode()
401401
req = NewRequest(t, "GET", link.String())
402402
resp = session.MakeRequest(t, req, http.StatusOK)
403403
DecodeJSON(t, resp, &apiIssues)
404-
assert.EqualValues(t, "19", resp.Header().Get("X-Total-Count"))
404+
assert.EqualValues(t, "20", resp.Header().Get("X-Total-Count"))
405405
assert.Len(t, apiIssues, 5)
406406

407407
query = url.Values{"assigned": {"true"}, "state": {"all"}}
@@ -450,7 +450,7 @@ func TestSearchIssues(t *testing.T) {
450450
func TestSearchIssuesWithLabels(t *testing.T) {
451451
defer tests.PrepareTestEnv(t)()
452452

453-
expectedIssueCount := 17 // from the fixtures
453+
expectedIssueCount := 18 // from the fixtures
454454
if expectedIssueCount > setting.UI.IssuePagingNum {
455455
expectedIssueCount = setting.UI.IssuePagingNum
456456
}

0 commit comments

Comments
 (0)