Skip to content

Commit abe4e22

Browse files
committed
Added test and migration when external user login
1 parent 2263c5a commit abe4e22

File tree

5 files changed

+122
-11
lines changed

5 files changed

+122
-11
lines changed

models/external_login_user.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,5 +181,8 @@ func UpdateMigrationsByType(tp structs.GitServiceType, externalUserID string, us
181181
return err
182182
}
183183

184-
return UpdateReactionsMigrationsByType(tp, externalUserID, userID)
184+
if err := UpdateReactionsMigrationsByType(tp, externalUserID, userID); err != nil {
185+
return err
186+
}
187+
return UpdateReviewsMigrationsByType(tp, externalUserID, userID)
185188
}

models/migrate.go

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44

55
package models
66

7-
import "xorm.io/xorm"
7+
import (
8+
"code.gitea.io/gitea/modules/structs"
9+
10+
"xorm.io/builder"
11+
"xorm.io/xorm"
12+
)
813

914
// InsertMilestones creates milestones of repository.
1015
func InsertMilestones(ms ...*Milestone) (err error) {
@@ -202,3 +207,23 @@ func InsertReleases(rels ...*Release) error {
202207

203208
return sess.Commit()
204209
}
210+
211+
// UpdateReviewsMigrationsByType updates reivews' migrations information via given git service type and original id and poster id
212+
func UpdateReviewsMigrationsByType(tp structs.GitServiceType, originalAuthorID string, posterID int64) error {
213+
_, err := x.Table("review").
214+
Where(builder.In("issue_id",
215+
builder.Select("issue.id").
216+
From("issue").
217+
InnerJoin("repository", "issue.repo_id = repository.id").
218+
Where(builder.Eq{
219+
"repository.original_service_type": tp,
220+
}),
221+
)).
222+
And("review.original_author_id = ?", originalAuthorID).
223+
Update(map[string]interface{}{
224+
"poster_id": posterID,
225+
"original_author": "",
226+
"original_author_id": 0,
227+
})
228+
return err
229+
}

modules/migrations/base/review.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ package base
66

77
import "time"
88

9+
// enumerate all review states
10+
const (
11+
ReviewStatePending = "PENDING"
12+
ReviewStateApproved = "APPROVED"
13+
ReviewStateRequestChanges = "REQUEST_CHANGES"
14+
ReviewStateComment = "COMMENT"
15+
)
16+
917
// Review is a standard review information
1018
type Review struct {
1119
ID int64
@@ -16,7 +24,7 @@ type Review struct {
1624
CommitID string
1725
Content string
1826
CreatedAt time.Time
19-
State string // PENDING, APPROVE, REQUEST_CHANGES, or COMMENT
27+
State string // PENDING, APPROVED, REQUEST_CHANGES, or COMMENT
2028
Comments []*ReviewComment
2129
}
2230

modules/migrations/gitea.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ type GiteaLocalUploader struct {
5050
gitRepo *git.Repository
5151
prHeadCache map[string]struct{}
5252
userMap map[int64]int64 // external user id mapping to user id
53+
prCache map[int64]*models.PullRequest
5354
gitServiceType structs.GitServiceType
5455
}
5556

@@ -62,6 +63,7 @@ func NewGiteaLocalUploader(ctx context.Context, doer *models.User, repoOwner, re
6263
repoName: repoName,
6364
prHeadCache: make(map[string]struct{}),
6465
userMap: make(map[int64]int64),
66+
prCache: make(map[int64]*models.PullRequest),
6567
}
6668
}
6769

@@ -710,13 +712,13 @@ func (g *GiteaLocalUploader) newPullRequest(pr *base.PullRequest) (*models.PullR
710712

711713
func convertReviewState(state string) models.ReviewType {
712714
switch state {
713-
case "PENDING":
715+
case base.ReviewStatePending:
714716
return models.ReviewTypePending
715-
case "APPROVE":
717+
case base.ReviewStateApproved:
716718
return models.ReviewTypeApprove
717-
case "REQUEST_CHANGES":
719+
case base.ReviewStateRequestChanges:
718720
return models.ReviewTypeReject
719-
case "COMMENT":
721+
case base.ReviewStateComment:
720722
return models.ReviewTypeComment
721723
default:
722724
return models.ReviewTypePending
@@ -769,10 +771,14 @@ func (g *GiteaLocalUploader) CreateReviews(reviews ...*base.Review) error {
769771
cm.OriginalAuthorID = review.ReviewerID
770772
}
771773

772-
// TODO: cache pr
773-
pr, err := models.GetPullRequestByID(issueID)
774-
if err != nil {
775-
return err
774+
// get pr
775+
pr, ok := g.prCache[issueID]
776+
if !ok {
777+
pr, err := models.GetPullRequestByID(issueID)
778+
if err != nil {
779+
return err
780+
}
781+
g.prCache[issueID] = pr
776782
}
777783

778784
for _, comment := range review.Comments {

modules/migrations/github_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,4 +361,73 @@ func TestGitHubDownloadRepo(t *testing.T) {
361361
},
362362
},
363363
}, prs)
364+
365+
reviews, err := downloader.GetReviews(3)
366+
assert.NoError(t, err)
367+
assert.EqualValues(t, []*base.Review{
368+
{
369+
ID: 315859956,
370+
IssueIndex: 3,
371+
ReviewerID: 42128690,
372+
ReviewerName: "jolheiser",
373+
CommitID: "076160cf0b039f13e5eff19619932d181269414b",
374+
CreatedAt: time.Date(2019, 11, 12, 21, 35, 24, 0, time.UTC),
375+
State: base.ReviewStateApproved,
376+
},
377+
{
378+
ID: 315860062,
379+
IssueIndex: 3,
380+
ReviewerID: 1824502,
381+
ReviewerName: "zeripath",
382+
CommitID: "076160cf0b039f13e5eff19619932d181269414b",
383+
CreatedAt: time.Date(2019, 11, 12, 21, 35, 36, 0, time.UTC),
384+
State: base.ReviewStateApproved,
385+
},
386+
{
387+
ID: 315861440,
388+
IssueIndex: 3,
389+
ReviewerID: 165205,
390+
ReviewerName: "lafriks",
391+
CommitID: "076160cf0b039f13e5eff19619932d181269414b",
392+
CreatedAt: time.Date(2019, 11, 12, 21, 38, 00, 0, time.UTC),
393+
State: base.ReviewStateApproved,
394+
},
395+
}, reviews)
396+
397+
reviews, err = downloader.GetReviews(4)
398+
assert.NoError(t, err)
399+
assert.EqualValues(t, []*base.Review{
400+
{
401+
ID: 338338740,
402+
IssueIndex: 4,
403+
ReviewerID: 81045,
404+
ReviewerName: "lunny",
405+
CommitID: "2be9101c543658591222acbee3eb799edfc3853d",
406+
CreatedAt: time.Date(2020, 01, 04, 05, 33, 18, 0, time.UTC),
407+
State: base.ReviewStateApproved,
408+
Comments: []*base.ReviewComment{
409+
{
410+
ID: 363017488,
411+
Content: "This is a good pull request.",
412+
TreePath: "README.md",
413+
Position: 3,
414+
CommitID: "2be9101c543658591222acbee3eb799edfc3853d",
415+
PosterID: 81045,
416+
Reactions: &base.Reactions{},
417+
CreatedAt: time.Date(2020, 01, 04, 05, 33, 06, 0, time.UTC),
418+
UpdatedAt: time.Date(2020, 01, 04, 05, 33, 18, 0, time.UTC),
419+
},
420+
},
421+
},
422+
{
423+
ID: 338338740,
424+
IssueIndex: 4,
425+
ReviewerID: 81045,
426+
ReviewerName: "lunny",
427+
CommitID: "2be9101c543658591222acbee3eb799edfc3853d",
428+
CreatedAt: time.Date(2020, 01, 04, 05, 33, 18, 0, time.UTC),
429+
State: base.ReviewStateRequestChanges,
430+
Content: "Don't add more reviews",
431+
},
432+
}, reviews)
364433
}

0 commit comments

Comments
 (0)