Skip to content

Commit 367894a

Browse files
singuliereLoïc Dacharylunnywxiaoguangtechknowlogick
authored
add test coverage for original author conversion during migrations (go-gitea#18506)
* add test coverage for original author conversion during migrations And create a function to factorize a code snippet that is repeated five times and would otherwise be more difficult to test and maintain consistently. Signed-off-by: Loïc Dachary <[email protected]> * fix variable scope and int64 formatting * add missing calls to remapExternalUser and fix misplaced %d Co-authored-by: Loïc Dachary <[email protected]> Co-authored-by: Lunny Xiao <[email protected]> Co-authored-by: wxiaoguang <[email protected]> Co-authored-by: techknowlogick <[email protected]>
1 parent 6f6b849 commit 367894a

15 files changed

+222
-173
lines changed
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
[] # empty

models/issue.go

+17
Original file line numberDiff line numberDiff line change
@@ -2329,3 +2329,20 @@ func deleteIssuesByRepoID(sess db.Engine, repoID int64) (attachmentPaths []strin
23292329

23302330
return
23312331
}
2332+
2333+
// RemapExternalUser ExternalUserRemappable interface
2334+
func (issue *Issue) RemapExternalUser(externalName string, externalID, userID int64) error {
2335+
issue.OriginalAuthor = externalName
2336+
issue.OriginalAuthorID = externalID
2337+
issue.PosterID = userID
2338+
return nil
2339+
}
2340+
2341+
// GetUserID ExternalUserRemappable interface
2342+
func (issue *Issue) GetUserID() int64 { return issue.PosterID }
2343+
2344+
// GetExternalName ExternalUserRemappable interface
2345+
func (issue *Issue) GetExternalName() string { return issue.OriginalAuthor }
2346+
2347+
// GetExternalID ExternalUserRemappable interface
2348+
func (issue *Issue) GetExternalID() int64 { return issue.OriginalAuthorID }

models/issue_comment.go

+17
Original file line numberDiff line numberDiff line change
@@ -1464,3 +1464,20 @@ func commitBranchCheck(gitRepo *git.Repository, startCommit *git.Commit, endComm
14641464
}
14651465
return nil
14661466
}
1467+
1468+
// RemapExternalUser ExternalUserRemappable interface
1469+
func (c *Comment) RemapExternalUser(externalName string, externalID, userID int64) error {
1470+
c.OriginalAuthor = externalName
1471+
c.OriginalAuthorID = externalID
1472+
c.PosterID = userID
1473+
return nil
1474+
}
1475+
1476+
// GetUserID ExternalUserRemappable interface
1477+
func (c *Comment) GetUserID() int64 { return c.PosterID }
1478+
1479+
// GetExternalName ExternalUserRemappable interface
1480+
func (c *Comment) GetExternalName() string { return c.OriginalAuthor }
1481+
1482+
// GetExternalID ExternalUserRemappable interface
1483+
func (c *Comment) GetExternalID() int64 { return c.OriginalAuthorID }

models/issue_reaction.go

+17
Original file line numberDiff line numberDiff line change
@@ -343,3 +343,20 @@ func (list ReactionList) GetMoreUserCount() int {
343343
}
344344
return len(list) - setting.UI.ReactionMaxUserNum
345345
}
346+
347+
// RemapExternalUser ExternalUserRemappable interface
348+
func (r *Reaction) RemapExternalUser(externalName string, externalID, userID int64) error {
349+
r.OriginalAuthor = externalName
350+
r.OriginalAuthorID = externalID
351+
r.UserID = userID
352+
return nil
353+
}
354+
355+
// GetUserID ExternalUserRemappable interface
356+
func (r *Reaction) GetUserID() int64 { return r.UserID }
357+
358+
// GetExternalName ExternalUserRemappable interface
359+
func (r *Reaction) GetExternalName() string { return r.OriginalAuthor }
360+
361+
// GetExternalID ExternalUserRemappable interface
362+
func (r *Reaction) GetExternalID() int64 { return r.OriginalAuthorID }

models/release.go

+17
Original file line numberDiff line numberDiff line change
@@ -456,3 +456,20 @@ func SaveOrUpdateTag(repo *repo_model.Repository, newRel *Release) error {
456456
}
457457
return nil
458458
}
459+
460+
// RemapExternalUser ExternalUserRemappable interface
461+
func (r *Release) RemapExternalUser(externalName string, externalID, userID int64) error {
462+
r.OriginalAuthor = externalName
463+
r.OriginalAuthorID = externalID
464+
r.PublisherID = userID
465+
return nil
466+
}
467+
468+
// UserID ExternalUserRemappable interface
469+
func (r *Release) GetUserID() int64 { return r.PublisherID }
470+
471+
// ExternalName ExternalUserRemappable interface
472+
func (r *Release) GetExternalName() string { return r.OriginalAuthor }
473+
474+
// ExternalID ExternalUserRemappable interface
475+
func (r *Release) GetExternalID() int64 { return r.OriginalAuthorID }

models/review.go

+17
Original file line numberDiff line numberDiff line change
@@ -987,3 +987,20 @@ func (r *Review) HTMLURL() string {
987987
}
988988
return comment.HTMLURL()
989989
}
990+
991+
// RemapExternalUser ExternalUserRemappable interface
992+
func (r *Review) RemapExternalUser(externalName string, externalID, userID int64) error {
993+
r.OriginalAuthor = externalName
994+
r.OriginalAuthorID = externalID
995+
r.ReviewerID = userID
996+
return nil
997+
}
998+
999+
// GetUserID ExternalUserRemappable interface
1000+
func (r *Review) GetUserID() int64 { return r.ReviewerID }
1001+
1002+
// GetExternalName ExternalUserRemappable interface
1003+
func (r *Review) GetExternalName() string { return r.OriginalAuthor }
1004+
1005+
// GetExternalID ExternalUserRemappable interface
1006+
func (r *Review) GetExternalID() int64 { return r.OriginalAuthorID }

models/user/external_login_user.go

+11
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ type ExternalLoginUser struct {
6868
ExpiresAt time.Time
6969
}
7070

71+
type ExternalUserMigrated interface {
72+
GetExternalName() string
73+
GetExternalID() int64
74+
}
75+
76+
type ExternalUserRemappable interface {
77+
GetUserID() int64
78+
RemapExternalUser(externalName string, externalID, userID int64) error
79+
ExternalUserMigrated
80+
}
81+
7182
func init() {
7283
db.RegisterModel(new(ExternalLoginUser))
7384
}

modules/migration/comment.go

+6
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,9 @@ type Comment struct {
1818
Content string
1919
Reactions []*Reaction
2020
}
21+
22+
// GetExternalName ExternalUserMigrated interface
23+
func (c *Comment) GetExternalName() string { return c.PosterName }
24+
25+
// ExternalID ExternalUserMigrated interface
26+
func (c *Comment) GetExternalID() int64 { return c.PosterID }

modules/migration/issue.go

+6
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,9 @@ type Issue struct {
4646
Assignees []string `json:"assignees"`
4747
Context IssueContext `yaml:"-"`
4848
}
49+
50+
// GetExternalName ExternalUserMigrated interface
51+
func (i *Issue) GetExternalName() string { return i.PosterName }
52+
53+
// GetExternalID ExternalUserMigrated interface
54+
func (i *Issue) GetExternalID() int64 { return i.PosterID }

modules/migration/pullrequest.go

+6
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,9 @@ type PullRequestBranch struct {
6161
func (p PullRequestBranch) RepoPath() string {
6262
return fmt.Sprintf("%s/%s", p.OwnerName, p.RepoName)
6363
}
64+
65+
// GetExternalName ExternalUserMigrated interface
66+
func (p *PullRequest) GetExternalName() string { return p.PosterName }
67+
68+
// ExternalID ExternalUserMigrated interface
69+
func (p *PullRequest) GetExternalID() int64 { return p.PosterID }

modules/migration/reaction.go

+6
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,9 @@ type Reaction struct {
1010
UserName string `yaml:"user_name" json:"user_name"`
1111
Content string `json:"content"`
1212
}
13+
14+
// GetExternalName ExternalUserMigrated interface
15+
func (r *Reaction) GetExternalName() string { return r.UserName }
16+
17+
// GetExternalID ExternalUserMigrated interface
18+
func (r *Reaction) GetExternalID() int64 { return r.UserID }

modules/migration/release.go

+6
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,9 @@ type Release struct {
3838
Created time.Time
3939
Published time.Time
4040
}
41+
42+
// GetExternalName ExternalUserMigrated interface
43+
func (r *Release) GetExternalName() string { return r.PublisherName }
44+
45+
// GetExternalID ExternalUserMigrated interface
46+
func (r *Release) GetExternalID() int64 { return r.PublisherID }

modules/migration/review.go

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ type Review struct {
2828
Comments []*ReviewComment
2929
}
3030

31+
// GetExternalName ExternalUserMigrated interface
32+
func (r *Review) GetExternalName() string { return r.ReviewerName }
33+
34+
// ExternalID ExternalUserMigrated interface
35+
func (r *Review) GetExternalID() int64 { return r.ReviewerID }
36+
3137
// ReviewComment represents a review comment
3238
type ReviewComment struct {
3339
ID int64

0 commit comments

Comments
 (0)