Skip to content

Commit 9f1bef8

Browse files
committed
add tests for freeze_periods
1 parent 12f2595 commit 9f1bef8

File tree

1 file changed

+214
-0
lines changed

1 file changed

+214
-0
lines changed

freeze_periods_test.go

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
package gitlab
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
"testing"
7+
8+
"github.com/stretchr/testify/require"
9+
)
10+
11+
func TestFreezePeriodsService_ListFreezePeriods(t *testing.T) {
12+
mux, server, client := setup(t)
13+
defer teardown(server)
14+
15+
mux.HandleFunc("/api/v4/projects/19/freeze_periods", func(w http.ResponseWriter, r *http.Request) {
16+
testMethod(t, r, http.MethodGet)
17+
fmt.Fprintf(w, `
18+
[
19+
{
20+
"id":1,
21+
"freeze_start":"0 23 * * 5",
22+
"freeze_end":"0 8 * * 1",
23+
"cron_timezone":"UTC"
24+
}
25+
]
26+
`)
27+
})
28+
29+
want := []*FreezePeriod{
30+
{
31+
ID: 1,
32+
FreezeStart: "0 23 * * 5",
33+
FreezeEnd: "0 8 * * 1",
34+
CronTimezone: "UTC",
35+
},
36+
}
37+
38+
fps, resp, err := client.FreezePeriods.ListFreezePeriods(19, nil, nil)
39+
require.NoError(t, err)
40+
require.NotNil(t, resp)
41+
require.Equal(t, want, fps)
42+
43+
fps, resp, err = client.FreezePeriods.ListFreezePeriods(19.01, nil, nil)
44+
require.EqualError(t, err, "invalid ID type 19.01, the ID must be an int or a string")
45+
require.Nil(t, resp)
46+
require.Nil(t, fps)
47+
48+
fps, resp, err = client.FreezePeriods.ListFreezePeriods(19, nil, nil, errorOption)
49+
require.EqualError(t, err, "RequestOptionFunc returns an error")
50+
require.Nil(t, resp)
51+
require.Nil(t, fps)
52+
53+
fps, resp, err = client.FreezePeriods.ListFreezePeriods(3, nil, nil)
54+
require.Error(t, err)
55+
require.Nil(t, fps)
56+
require.Equal(t, http.StatusNotFound, resp.StatusCode)
57+
}
58+
59+
func TestFreezePeriodsService_GetFreezePeriod(t *testing.T) {
60+
mux, server, client := setup(t)
61+
defer teardown(server)
62+
63+
mux.HandleFunc("/api/v4/projects/19/freeze_periods/1", func(w http.ResponseWriter, r *http.Request) {
64+
testMethod(t, r, http.MethodGet)
65+
fmt.Fprintf(w, `
66+
{
67+
"id":1,
68+
"freeze_start":"0 23 * * 5",
69+
"freeze_end":"0 8 * * 1",
70+
"cron_timezone":"UTC"
71+
}
72+
`)
73+
})
74+
75+
want := &FreezePeriod{
76+
ID: 1,
77+
FreezeStart: "0 23 * * 5",
78+
FreezeEnd: "0 8 * * 1",
79+
CronTimezone: "UTC",
80+
}
81+
82+
fp, resp, err := client.FreezePeriods.GetFreezePeriod(19, 1, nil, nil)
83+
require.NoError(t, err)
84+
require.NotNil(t, resp)
85+
require.Equal(t, want, fp)
86+
87+
fp, resp, err = client.FreezePeriods.GetFreezePeriod(19.01, 1, nil, nil)
88+
require.EqualError(t, err, "invalid ID type 19.01, the ID must be an int or a string")
89+
require.Nil(t, resp)
90+
require.Nil(t, fp)
91+
92+
fp, resp, err = client.FreezePeriods.GetFreezePeriod(19, 1, nil, nil, errorOption)
93+
require.EqualError(t, err, "RequestOptionFunc returns an error")
94+
require.Nil(t, resp)
95+
require.Nil(t, fp)
96+
97+
fp, resp, err = client.FreezePeriods.GetFreezePeriod(3, 1, nil, nil)
98+
require.Error(t, err)
99+
require.Nil(t, fp)
100+
require.Equal(t, http.StatusNotFound, resp.StatusCode)
101+
}
102+
103+
func TestFreezePeriodsService_CreateFreezePeriodOptions(t *testing.T) {
104+
mux, server, client := setup(t)
105+
defer teardown(server)
106+
107+
mux.HandleFunc("/api/v4/projects/19/freeze_periods", func(w http.ResponseWriter, r *http.Request) {
108+
testMethod(t, r, http.MethodPost)
109+
fmt.Fprintf(w, `
110+
{
111+
"id":1,
112+
"freeze_start":"0 23 * * 5",
113+
"freeze_end":"0 8 * * 1",
114+
"cron_timezone":"UTC"
115+
}
116+
`)
117+
})
118+
119+
want := &FreezePeriod{
120+
ID: 1,
121+
FreezeStart: "0 23 * * 5",
122+
FreezeEnd: "0 8 * * 1",
123+
CronTimezone: "UTC",
124+
}
125+
126+
fp, resp, err := client.FreezePeriods.CreateFreezePeriodOptions(19, nil, nil)
127+
require.NoError(t, err)
128+
require.NotNil(t, resp)
129+
require.Equal(t, want, fp)
130+
131+
fp, resp, err = client.FreezePeriods.CreateFreezePeriodOptions(19.01, nil, nil)
132+
require.EqualError(t, err, "invalid ID type 19.01, the ID must be an int or a string")
133+
require.Nil(t, resp)
134+
require.Nil(t, fp)
135+
136+
fp, resp, err = client.FreezePeriods.CreateFreezePeriodOptions(19, nil, nil, errorOption)
137+
require.EqualError(t, err, "RequestOptionFunc returns an error")
138+
require.Nil(t, resp)
139+
require.Nil(t, fp)
140+
141+
fp, resp, err = client.FreezePeriods.CreateFreezePeriodOptions(3, nil, nil)
142+
require.Error(t, err)
143+
require.Nil(t, fp)
144+
require.Equal(t, http.StatusNotFound, resp.StatusCode)
145+
}
146+
147+
func TestFreezePeriodsService_UpdateFreezePeriodOptions(t *testing.T) {
148+
mux, server, client := setup(t)
149+
defer teardown(server)
150+
151+
mux.HandleFunc("/api/v4/projects/19/freeze_periods/1", func(w http.ResponseWriter, r *http.Request) {
152+
testMethod(t, r, http.MethodPut)
153+
fmt.Fprintf(w, `
154+
{
155+
"id":1,
156+
"freeze_start":"0 23 * * 5",
157+
"freeze_end":"0 8 * * 1",
158+
"cron_timezone":"UTC"
159+
}
160+
`)
161+
})
162+
163+
want := &FreezePeriod{
164+
ID: 1,
165+
FreezeStart: "0 23 * * 5",
166+
FreezeEnd: "0 8 * * 1",
167+
CronTimezone: "UTC",
168+
}
169+
170+
fp, resp, err := client.FreezePeriods.UpdateFreezePeriodOptions(19, 1, nil, nil)
171+
require.NoError(t, err)
172+
require.NotNil(t, resp)
173+
require.Equal(t, want, fp)
174+
175+
fp, resp, err = client.FreezePeriods.UpdateFreezePeriodOptions(19.01, 1, nil, nil)
176+
require.EqualError(t, err, "invalid ID type 19.01, the ID must be an int or a string")
177+
require.Nil(t, resp)
178+
require.Nil(t, fp)
179+
180+
fp, resp, err = client.FreezePeriods.UpdateFreezePeriodOptions(19, 1, nil, nil, errorOption)
181+
require.EqualError(t, err, "RequestOptionFunc returns an error")
182+
require.Nil(t, resp)
183+
require.Nil(t, fp)
184+
185+
fp, resp, err = client.FreezePeriods.UpdateFreezePeriodOptions(3, 1, nil, nil)
186+
require.Error(t, err)
187+
require.Nil(t, fp)
188+
require.Equal(t, http.StatusNotFound, resp.StatusCode)
189+
}
190+
191+
func TestFreezePeriodsService_DeleteFreezePeriod(t *testing.T) {
192+
mux, server, client := setup(t)
193+
defer teardown(server)
194+
195+
mux.HandleFunc("/api/v4/projects/19/freeze_periods/1", func(w http.ResponseWriter, r *http.Request) {
196+
testMethod(t, r, http.MethodDelete)
197+
})
198+
199+
resp, err := client.FreezePeriods.DeleteFreezePeriod(19, 1, nil, nil)
200+
require.NoError(t, err)
201+
require.NotNil(t, resp)
202+
203+
resp, err = client.FreezePeriods.DeleteFreezePeriod(19.01, 1, nil, nil)
204+
require.EqualError(t, err, "invalid ID type 19.01, the ID must be an int or a string")
205+
require.Nil(t, resp)
206+
207+
resp, err = client.FreezePeriods.DeleteFreezePeriod(19, 1, nil, nil, errorOption)
208+
require.EqualError(t, err, "RequestOptionFunc returns an error")
209+
require.Nil(t, resp)
210+
211+
resp, err = client.FreezePeriods.DeleteFreezePeriod(3, 1, nil, nil)
212+
require.Error(t, err)
213+
require.Equal(t, http.StatusNotFound, resp.StatusCode)
214+
}

0 commit comments

Comments
 (0)