@@ -10,13 +10,13 @@ describe('module', () => {
10
10
let createRelease ;
11
11
12
12
beforeEach ( ( ) => {
13
- core . getInput = jest . fn ( )
14
- . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
15
- . mockReturnValueOnce ( 'myRelease' )
16
- . mockReturnValueOnce ( 'false' )
17
- . mockReturnValueOnce ( 'false' ) ;
18
-
19
- createRelease = jest . fn ( ) ;
13
+ createRelease = jest . fn ( ) . mockReturnValueOnce ( {
14
+ data : {
15
+ id : 'releaseId' ,
16
+ html_url : 'htmlUrl' ,
17
+ upload_url : 'uploadUrl'
18
+ }
19
+ } ) ;
20
20
21
21
context . repo = {
22
22
owner : 'owner' ,
@@ -33,6 +33,13 @@ describe('module', () => {
33
33
} ) ;
34
34
35
35
test ( 'Create release endpoint is called' , async ( ) => {
36
+ core . getInput = jest
37
+ . fn ( )
38
+ . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
39
+ . mockReturnValueOnce ( 'myRelease' )
40
+ . mockReturnValueOnce ( 'false' )
41
+ . mockReturnValueOnce ( 'false' ) ;
42
+
36
43
await run ( ) ;
37
44
38
45
expect ( createRelease ) . toHaveBeenCalledWith ( {
@@ -45,5 +52,84 @@ describe('module', () => {
45
52
} ) ;
46
53
} ) ;
47
54
48
- test ( 'Outputs are set' , async ( ) => { } ) ;
55
+ test ( 'Draft release is created' , async ( ) => {
56
+ core . getInput = jest
57
+ . fn ( )
58
+ . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
59
+ . mockReturnValueOnce ( 'myRelease' )
60
+ . mockReturnValueOnce ( 'true' )
61
+ . mockReturnValueOnce ( 'false' ) ;
62
+
63
+ await run ( ) ;
64
+
65
+ expect ( createRelease ) . toHaveBeenCalledWith ( {
66
+ owner : 'owner' ,
67
+ repo : 'repo' ,
68
+ tag_name : 'v1.0.0' ,
69
+ name : 'myRelease' ,
70
+ draft : true ,
71
+ prerelease : false
72
+ } ) ;
73
+ } ) ;
74
+
75
+ test ( 'Pre-release release is created' , async ( ) => {
76
+ core . getInput = jest
77
+ . fn ( )
78
+ . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
79
+ . mockReturnValueOnce ( 'myRelease' )
80
+ . mockReturnValueOnce ( 'false' )
81
+ . mockReturnValueOnce ( 'true' ) ;
82
+
83
+ await run ( ) ;
84
+
85
+ expect ( createRelease ) . toHaveBeenCalledWith ( {
86
+ owner : 'owner' ,
87
+ repo : 'repo' ,
88
+ tag_name : 'v1.0.0' ,
89
+ name : 'myRelease' ,
90
+ draft : false ,
91
+ prerelease : true
92
+ } ) ;
93
+ } ) ;
94
+
95
+ test ( 'Outputs are set' , async ( ) => {
96
+ core . getInput = jest
97
+ . fn ( )
98
+ . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
99
+ . mockReturnValueOnce ( 'myRelease' )
100
+ . mockReturnValueOnce ( 'false' )
101
+ . mockReturnValueOnce ( 'false' ) ;
102
+
103
+ core . setOutput = jest . fn ( ) ;
104
+
105
+ await run ( ) ;
106
+
107
+ expect ( core . setOutput ) . toHaveBeenNthCalledWith ( 1 , 'id' , 'releaseId' ) ;
108
+ expect ( core . setOutput ) . toHaveBeenNthCalledWith ( 2 , 'html_url' , 'htmlUrl' ) ;
109
+ expect ( core . setOutput ) . toHaveBeenNthCalledWith ( 3 , 'upload_url' , 'uploadUrl' ) ;
110
+ } ) ;
111
+
112
+ test ( 'Action fails elegantly' , async ( ) => {
113
+ core . getInput = jest
114
+ . fn ( )
115
+ . mockReturnValueOnce ( 'refs/tags/v1.0.0' )
116
+ . mockReturnValueOnce ( 'myRelease' )
117
+ . mockReturnValueOnce ( 'false' )
118
+ . mockReturnValueOnce ( 'false' ) ;
119
+
120
+ createRelease . mockRestore ( ) ;
121
+ createRelease . mockImplementation ( ( ) => {
122
+ throw new Error ( 'Error creating release' ) ;
123
+ } ) ;
124
+
125
+ core . setOutput = jest . fn ( ) ;
126
+
127
+ core . setFailed = jest . fn ( ) ;
128
+
129
+ await run ( ) ;
130
+
131
+ expect ( createRelease ) . toHaveBeenCalled ( ) ;
132
+ expect ( core . setFailed ) . toHaveBeenCalledWith ( 'Error creating release' ) ;
133
+ expect ( core . setOutput ) . toHaveBeenCalledTimes ( 0 ) ;
134
+ } ) ;
49
135
} ) ;
0 commit comments