Skip to content

Commit f68bee5

Browse files
committed
add more tests
1 parent 1f8952f commit f68bee5

File tree

2 files changed

+39
-5
lines changed

2 files changed

+39
-5
lines changed

routers/web/repo/release.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,12 +481,16 @@ func NewReleasePost(ctx *context.Context) {
481481
return
482482
}
483483

484-
// release exists, try to update it (it can't do tag-only if the release is just a tag)
485-
if form.TagOnly {
484+
// tag exists, try to convert it to a real release
485+
// old logic: if the release is not a tag (it is a real release), do not update it on the "new release" page
486+
// add new logic: if tag-only, do not convert the tag to a release
487+
if form.TagOnly || !rel.IsTag {
486488
ctx.Data["Err_TagName"] = true
487489
ctx.RenderWithErr(ctx.Tr("repo.release.tag_name_already_exist"), tplReleaseNew, &form)
488490
return
489491
}
492+
493+
// convert a tag to a real release (set is_tag=false)
490494
rel.Title = form.Title
491495
rel.Note = form.Content
492496
rel.Target = form.Target

routers/web/repo/release_test.go

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,47 @@ func TestNewReleasePost(t *testing.T) {
6969
assert.Equal(t, "content", rel.Note)
7070
})
7171

72-
t.Run("ReleaseExistsDoUpdate", func(t *testing.T) {
73-
post(t, forms.NewReleaseForm{
72+
t.Run("ReleaseExistsDoUpdate(non-tag)", func(t *testing.T) {
73+
ctx := post(t, forms.NewReleaseForm{
7474
TagName: "v1.1",
7575
Target: "master",
7676
Title: "updated-title",
7777
Content: "updated-content",
7878
})
7979
rel := loadRelease(t, "v1.1")
8080
require.NotNil(t, rel)
81+
assert.False(t, rel.IsTag)
82+
assert.Equal(t, "testing-release", rel.Title)
83+
assert.NotEmpty(t, ctx.Flash.ErrorMsg)
84+
})
85+
86+
t.Run("ReleaseExistsDoUpdate(tag-only)", func(t *testing.T) {
87+
ctx := post(t, forms.NewReleaseForm{
88+
TagName: "delete-tag", // a strange name, but it is the only "is_tag=true" fixture
89+
Target: "master",
90+
Title: "updated-title",
91+
Content: "updated-content",
92+
TagOnly: true,
93+
})
94+
rel := loadRelease(t, "delete-tag")
95+
require.NotNil(t, rel)
96+
assert.True(t, rel.IsTag) // the record should not be updated because the request is "tag-only". TODO: need to improve the logic?
97+
assert.Equal(t, "delete-tag", rel.Title)
98+
assert.NotEmpty(t, ctx.Flash.ErrorMsg)
99+
})
100+
101+
t.Run("ReleaseExistsDoUpdate(tag-release)", func(t *testing.T) {
102+
ctx := post(t, forms.NewReleaseForm{
103+
TagName: "delete-tag", // a strange name, but it is the only "is_tag=true" fixture
104+
Target: "master",
105+
Title: "updated-title",
106+
Content: "updated-content",
107+
})
108+
rel := loadRelease(t, "delete-tag")
109+
require.NotNil(t, rel)
110+
assert.False(t, rel.IsTag) // the tag has been "updated" to be a real "release"
81111
assert.Equal(t, "updated-title", rel.Title)
82-
assert.Equal(t, "updated-content", rel.Note)
112+
assert.Empty(t, ctx.Flash.ErrorMsg)
83113
})
84114

85115
t.Run("TagOnly", func(t *testing.T) {

0 commit comments

Comments
 (0)