@@ -11,73 +11,104 @@ import (
11
11
"code.gitea.io/gitea/models/unit"
12
12
"code.gitea.io/gitea/models/unittest"
13
13
"code.gitea.io/gitea/modules/web"
14
+ "code.gitea.io/gitea/services/context"
14
15
"code.gitea.io/gitea/services/contexttest"
15
16
"code.gitea.io/gitea/services/forms"
16
17
17
18
"github.com/stretchr/testify/assert"
19
+ "github.com/stretchr/testify/require"
18
20
)
19
21
20
22
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
+ })
64
41
42
+ post := func (t * testing.T , form forms.NewReleaseForm ) * context.Context {
65
43
ctx , _ := contexttest .MockContext (t , "user2/repo1/releases/new" )
66
44
contexttest .LoadUser (t , ctx , 2 )
67
45
contexttest .LoadRepo (t , ctx , 1 )
68
46
contexttest .LoadGitRepo (t , ctx )
69
- web .SetForm (ctx , & testCase .Form )
47
+ defer ctx .Repo .GitRepo .Close ()
48
+ web .SetForm (ctx , & form )
70
49
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
80
51
}
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
+ })
81
112
}
82
113
83
114
func TestCalReleaseNumCommitsBehind (t * testing.T ) {
0 commit comments