Skip to content

Commit 3ca836c

Browse files
committed
rewrite tests
1 parent 982cb1f commit 3ca836c

File tree

2 files changed

+85
-54
lines changed

2 files changed

+85
-54
lines changed

routers/web/repo/release.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ func NewReleasePost(ctx *context.Context) {
482482
}
483483

484484
// release exists, try to update it (it can't do tag-only if the release is just a tag)
485-
if form.TagOnly && rel.IsTag {
485+
if form.TagOnly {
486486
ctx.Data["Err_TagName"] = true
487487
ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_already_exist"), tplReleaseNew, &form)
488488
return

routers/web/repo/release_test.go

Lines changed: 84 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -11,73 +11,104 @@ import (
1111
"code.gitea.io/gitea/models/unit"
1212
"code.gitea.io/gitea/models/unittest"
1313
"code.gitea.io/gitea/modules/web"
14+
"code.gitea.io/gitea/services/context"
1415
"code.gitea.io/gitea/services/contexttest"
1516
"code.gitea.io/gitea/services/forms"
1617

1718
"github.com/stretchr/testify/assert"
19+
"github.com/stretchr/testify/require"
1820
)
1921

2022
func TestNewReleasePost(t *testing.T) {
21-
for _, testCase := range []struct {
22-
RepoID int64
23-
UserID int64
24-
TagName string
25-
IsTag bool
26-
Form forms.NewReleaseForm
27-
}{
28-
{ // pre-existing tag
29-
RepoID: 1,
30-
UserID: 2,
31-
TagName: "v1.1",
32-
Form: forms.NewReleaseForm{
33-
TagName: "newtag",
34-
Target: "master",
35-
Title: "title",
36-
Content: "content",
37-
},
38-
},
39-
{ // creating a new tag when there's already a pre-existing tag
40-
RepoID: 1,
41-
UserID: 2,
42-
TagName: "delete-tag",
43-
IsTag: true,
44-
Form: forms.NewReleaseForm{
45-
TagName: "delete-tag",
46-
Target: "master",
47-
Title: "delete-tag",
48-
TagOnly: true,
49-
},
50-
},
51-
{
52-
RepoID: 1,
53-
UserID: 2,
54-
TagName: "newtag",
55-
Form: forms.NewReleaseForm{
56-
TagName: "newtag",
57-
Target: "master",
58-
Title: "title",
59-
Content: "content",
60-
},
61-
},
62-
} {
63-
unittest.PrepareTestEnv(t)
23+
unittest.PrepareTestEnv(t)
24+
25+
get := func(t *testing.T, tagName string) *context.Context {
26+
ctx, _ := contexttest.MockContext(t, "user2/repo1/releases/new?tag="+tagName)
27+
contexttest.LoadUser(t, ctx, 2)
28+
contexttest.LoadRepo(t, ctx, 1)
29+
contexttest.LoadGitRepo(t, ctx)
30+
defer ctx.Repo.GitRepo.Close()
31+
NewRelease(ctx)
32+
return ctx
33+
}
34+
35+
t.Run("NewReleasePage", func(t *testing.T) {
36+
ctx := get(t, "v1.1")
37+
assert.NotEmpty(t, ctx.Data["TagNameReleaseExists"])
38+
ctx = get(t, "new-tag-name")
39+
assert.Empty(t, ctx.Data["TagNameReleaseExists"])
40+
})
6441

42+
post := func(t *testing.T, form forms.NewReleaseForm) *context.Context {
6543
ctx, _ := contexttest.MockContext(t, "user2/repo1/releases/new")
6644
contexttest.LoadUser(t, ctx, 2)
6745
contexttest.LoadRepo(t, ctx, 1)
6846
contexttest.LoadGitRepo(t, ctx)
69-
web.SetForm(ctx, &testCase.Form)
47+
defer ctx.Repo.GitRepo.Close()
48+
web.SetForm(ctx, &form)
7049
NewReleasePost(ctx)
71-
unittest.AssertExistsAndLoadBean(t, &repo_model.Release{
72-
RepoID: 1,
73-
PublisherID: 2,
74-
TagName: testCase.Form.TagName,
75-
Target: testCase.Form.Target,
76-
Title: testCase.Form.Title,
77-
Note: testCase.Form.Content,
78-
}, unittest.Cond("is_tag=? AND is_draft=?", testCase.IsTag, testCase.Form.Draft))
79-
_ = ctx.Repo.GitRepo.Close()
50+
return ctx
8051
}
52+
53+
loadRelease := func(t *testing.T, tagName string) *repo_model.Release {
54+
return unittest.GetBean(t, &repo_model.Release{}, unittest.Cond("repo_id=1 AND tag_name=?", tagName))
55+
}
56+
57+
t.Run("NewTagRelease", func(t *testing.T) {
58+
post(t, forms.NewReleaseForm{
59+
TagName: "newtag",
60+
Target: "master",
61+
Title: "title",
62+
Content: "content",
63+
})
64+
rel := loadRelease(t, "newtag")
65+
require.NotNil(t, rel)
66+
assert.False(t, rel.IsTag)
67+
assert.Equal(t, "master", rel.Target)
68+
assert.Equal(t, "title", rel.Title)
69+
assert.Equal(t, "content", rel.Note)
70+
})
71+
72+
t.Run("ReleaseExistsDoUpdate", func(t *testing.T) {
73+
post(t, forms.NewReleaseForm{
74+
TagName: "v1.1",
75+
Target: "master",
76+
Title: "updated-title",
77+
Content: "updated-content",
78+
})
79+
rel := loadRelease(t, "v1.1")
80+
require.NotNil(t, rel)
81+
assert.Equal(t, "updated-title", rel.Title)
82+
assert.Equal(t, "updated-content", rel.Note)
83+
})
84+
85+
t.Run("TagOnly", func(t *testing.T) {
86+
ctx := post(t, forms.NewReleaseForm{
87+
TagName: "new-tag-only",
88+
Target: "master",
89+
Title: "title",
90+
Content: "content",
91+
TagOnly: true,
92+
})
93+
rel := loadRelease(t, "new-tag-only")
94+
require.NotNil(t, rel)
95+
assert.True(t, rel.IsTag)
96+
assert.Empty(t, ctx.Flash.ErrorMsg)
97+
})
98+
99+
t.Run("TagOnlyConflict", func(t *testing.T) {
100+
ctx := post(t, forms.NewReleaseForm{
101+
TagName: "v1.1",
102+
Target: "master",
103+
Title: "title",
104+
Content: "content",
105+
TagOnly: true,
106+
})
107+
rel := loadRelease(t, "v1.1")
108+
require.NotNil(t, rel)
109+
assert.False(t, rel.IsTag)
110+
assert.NotEmpty(t, ctx.Flash.ErrorMsg)
111+
})
81112
}
82113

83114
func TestCalReleaseNumCommitsBehind(t *testing.T) {

0 commit comments

Comments
 (0)