Skip to content

Commit e2eb422

Browse files
Loïc Dacharyrealaravinth
Loïc Dachary
authored andcommitted
tests: add coverage for migrate models helpers
They were previously not covered at all, either by integration tests or unit tests. https://app.codecov.io/gh/go-gitea/gitea/blob/main/models/migrate.go Signed-off-by: Loïc Dachary <[email protected]>
1 parent a1360ce commit e2eb422

File tree

1 file changed

+169
-0
lines changed

1 file changed

+169
-0
lines changed

models/migrate_test.go

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
// Copyright 2022 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package models
6+
7+
import (
8+
"testing"
9+
10+
repo_model "code.gitea.io/gitea/models/repo"
11+
"code.gitea.io/gitea/models/unittest"
12+
user_model "code.gitea.io/gitea/models/user"
13+
"code.gitea.io/gitea/modules/setting"
14+
15+
"github.com/stretchr/testify/assert"
16+
)
17+
18+
func TestMigrate_InsertMilestones(t *testing.T) {
19+
assert.NoError(t, unittest.PrepareTestDatabase())
20+
reponame := "repo1"
21+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame}).(*repo_model.Repository)
22+
name := "milestonetest1"
23+
ms := &Milestone{
24+
RepoID: repo.ID,
25+
Name: name,
26+
}
27+
err := InsertMilestones(ms)
28+
assert.NoError(t, err)
29+
unittest.AssertExistsAndLoadBean(t, ms)
30+
repoModified := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repo.ID}).(*repo_model.Repository)
31+
assert.EqualValues(t, repo.NumMilestones+1, repoModified.NumMilestones)
32+
33+
unittest.CheckConsistencyFor(t, &Milestone{})
34+
}
35+
36+
func assertCreateIssues(t *testing.T, reponame string, isPull bool) {
37+
assert.NoError(t, unittest.PrepareTestDatabase())
38+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame}).(*repo_model.Repository)
39+
owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}).(*user_model.User)
40+
label := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label)
41+
milestone := unittest.AssertExistsAndLoadBean(t, &Milestone{ID: 1}).(*Milestone)
42+
assert.EqualValues(t, milestone.ID, 1)
43+
reaction := &Reaction{
44+
Type: "heart",
45+
UserID: owner.ID,
46+
}
47+
48+
title := "issuetitle1"
49+
var is = &Issue{
50+
RepoID: repo.ID,
51+
MilestoneID: milestone.ID,
52+
Repo: repo,
53+
Title: title,
54+
Content: "issuecontent1",
55+
IsPull: isPull,
56+
PosterID: owner.ID,
57+
Poster: owner,
58+
IsClosed: true,
59+
Labels: []*Label{label},
60+
Reactions: []*Reaction{reaction},
61+
}
62+
err := InsertIssues(is)
63+
assert.NoError(t, err)
64+
65+
i := unittest.AssertExistsAndLoadBean(t, &Issue{Title: title}).(*Issue)
66+
unittest.AssertExistsAndLoadBean(t, &Reaction{Type: "heart", UserID: owner.ID, IssueID: i.ID})
67+
68+
labelModified := unittest.AssertExistsAndLoadBean(t, &Label{ID: 1}).(*Label)
69+
assert.EqualValues(t, label.NumIssues+1, labelModified.NumIssues)
70+
assert.EqualValues(t, label.NumClosedIssues+1, labelModified.NumClosedIssues)
71+
72+
milestoneModified := unittest.AssertExistsAndLoadBean(t, &Milestone{ID: milestone.ID}).(*Milestone)
73+
assert.EqualValues(t, milestone.NumIssues+1, milestoneModified.NumIssues)
74+
assert.EqualValues(t, milestone.NumClosedIssues+1, milestoneModified.NumClosedIssues)
75+
}
76+
77+
func TestMigrate_CreateIssuesIsPullFalse(t *testing.T) {
78+
setting.Database.LogSQL = true
79+
assert.NoError(t, unittest.PrepareTestDatabase())
80+
reponame := "repo1"
81+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame}).(*repo_model.Repository)
82+
83+
assertCreateIssues(t, reponame, false)
84+
85+
repoModified := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repo.ID}).(*repo_model.Repository)
86+
assert.EqualValues(t, repo.NumIssues+1, repoModified.NumIssues)
87+
assert.EqualValues(t, repo.NumClosedIssues+1, repoModified.NumClosedIssues)
88+
}
89+
90+
func TestMigrate_CreateIssuesIsPullTrue(t *testing.T) {
91+
assert.NoError(t, unittest.PrepareTestDatabase())
92+
reponame := "repo1"
93+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame}).(*repo_model.Repository)
94+
95+
assertCreateIssues(t, reponame, true)
96+
97+
repoModified := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repo.ID}).(*repo_model.Repository)
98+
assert.EqualValues(t, repo.NumPulls+1, repoModified.NumPulls)
99+
assert.EqualValues(t, repo.NumClosedPulls+1, repoModified.NumClosedPulls)
100+
}
101+
102+
func TestMigrate_InsertIssueComments(t *testing.T) {
103+
assert.NoError(t, unittest.PrepareTestDatabase())
104+
issue := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue)
105+
_ = issue.LoadRepo()
106+
owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: issue.Repo.OwnerID}).(*user_model.User)
107+
reaction := &Reaction{
108+
Type: "heart",
109+
UserID: owner.ID,
110+
}
111+
112+
comment := &Comment{
113+
PosterID: owner.ID,
114+
Poster: owner,
115+
IssueID: issue.ID,
116+
Issue: issue,
117+
Reactions: []*Reaction{reaction},
118+
}
119+
120+
err := InsertIssueComments([]*Comment{comment})
121+
assert.NoError(t, err)
122+
123+
issueModified := unittest.AssertExistsAndLoadBean(t, &Issue{ID: 1}).(*Issue)
124+
assert.EqualValues(t, issue.NumComments+1, issueModified.NumComments)
125+
126+
unittest.CheckConsistencyFor(t, &Issue{})
127+
}
128+
129+
func TestMigrate_InsertPullRequests(t *testing.T) {
130+
assert.NoError(t, unittest.PrepareTestDatabase())
131+
reponame := "repo1"
132+
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: reponame}).(*repo_model.Repository)
133+
owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}).(*user_model.User)
134+
135+
var i = &Issue{
136+
RepoID: repo.ID,
137+
Repo: repo,
138+
Title: "title1",
139+
Content: "issuecontent1",
140+
IsPull: true,
141+
PosterID: owner.ID,
142+
Poster: owner,
143+
}
144+
145+
var p = &PullRequest{
146+
Issue: i,
147+
}
148+
149+
err := InsertPullRequests(p)
150+
assert.NoError(t, err)
151+
152+
_ = unittest.AssertExistsAndLoadBean(t, &PullRequest{IssueID: i.ID}).(*PullRequest)
153+
154+
unittest.CheckConsistencyFor(t, &Issue{}, &PullRequest{})
155+
}
156+
157+
func TestMigrate_InsertReleases(t *testing.T) {
158+
assert.NoError(t, unittest.PrepareTestDatabase())
159+
160+
a := &repo_model.Attachment{
161+
UUID: "a0eebc91-9c0c-4ef7-bb6e-6bb9bd380a12",
162+
}
163+
r := &Release{
164+
Attachments: []*repo_model.Attachment{a},
165+
}
166+
167+
err := InsertReleases(r)
168+
assert.NoError(t, err)
169+
}

0 commit comments

Comments
 (0)