@@ -3,6 +3,7 @@ package coderd
3
3
import (
4
4
"context"
5
5
"crypto/sha256"
6
+ "database/sql"
6
7
"encoding/json"
7
8
"net/http/httptest"
8
9
"net/url"
@@ -146,6 +147,109 @@ func TestProvisionerJobLogs_Unit(t *testing.T) {
146
147
})
147
148
}
148
149
150
+ func TestConvertProvisionerJob_Unit (t * testing.T ) {
151
+ t .Parallel ()
152
+ validNullTimeMock := sql.NullTime {
153
+ Time : database .Now (),
154
+ Valid : true ,
155
+ }
156
+ invalidNullTimeMock := sql.NullTime {}
157
+ errorMock := sql.NullString {
158
+ String : "error" ,
159
+ Valid : true ,
160
+ }
161
+ testCases := []struct {
162
+ name string
163
+ input database.ProvisionerJob
164
+ expected codersdk.ProvisionerJob
165
+ }{
166
+ {
167
+ name : "empty" ,
168
+ input : database.ProvisionerJob {},
169
+ expected : codersdk.ProvisionerJob {
170
+ Status : codersdk .ProvisionerJobPending ,
171
+ },
172
+ },
173
+ {
174
+ name : "cancellation pending" ,
175
+ input : database.ProvisionerJob {
176
+ CanceledAt : validNullTimeMock ,
177
+ CompletedAt : invalidNullTimeMock ,
178
+ },
179
+ expected : codersdk.ProvisionerJob {
180
+ Status : codersdk .ProvisionerJobCanceling ,
181
+ },
182
+ },
183
+ {
184
+ name : "cancellation failed" ,
185
+ input : database.ProvisionerJob {
186
+ CanceledAt : validNullTimeMock ,
187
+ CompletedAt : validNullTimeMock ,
188
+ Error : errorMock ,
189
+ },
190
+ expected : codersdk.ProvisionerJob {
191
+ CompletedAt : & validNullTimeMock .Time ,
192
+ Status : codersdk .ProvisionerJobFailed ,
193
+ Error : errorMock .String ,
194
+ },
195
+ },
196
+ {
197
+ name : "cancellation succeeded" ,
198
+ input : database.ProvisionerJob {
199
+ CanceledAt : validNullTimeMock ,
200
+ CompletedAt : validNullTimeMock ,
201
+ },
202
+ expected : codersdk.ProvisionerJob {
203
+ CompletedAt : & validNullTimeMock .Time ,
204
+ Status : codersdk .ProvisionerJobCanceled ,
205
+ },
206
+ },
207
+ {
208
+ name : "job pending" ,
209
+ input : database.ProvisionerJob {
210
+ StartedAt : invalidNullTimeMock ,
211
+ },
212
+ expected : codersdk.ProvisionerJob {
213
+ Status : codersdk .ProvisionerJobPending ,
214
+ },
215
+ },
216
+ {
217
+ name : "job failed" ,
218
+ input : database.ProvisionerJob {
219
+ CompletedAt : validNullTimeMock ,
220
+ StartedAt : validNullTimeMock ,
221
+ Error : errorMock ,
222
+ },
223
+ expected : codersdk.ProvisionerJob {
224
+ CompletedAt : & validNullTimeMock .Time ,
225
+ StartedAt : & validNullTimeMock .Time ,
226
+ Error : errorMock .String ,
227
+ Status : codersdk .ProvisionerJobFailed ,
228
+ },
229
+ },
230
+ {
231
+ name : "job succeeded" ,
232
+ input : database.ProvisionerJob {
233
+ CompletedAt : validNullTimeMock ,
234
+ StartedAt : validNullTimeMock ,
235
+ },
236
+ expected : codersdk.ProvisionerJob {
237
+ CompletedAt : & validNullTimeMock .Time ,
238
+ StartedAt : & validNullTimeMock .Time ,
239
+ Status : codersdk .ProvisionerJobSucceeded ,
240
+ },
241
+ },
242
+ }
243
+ for _ , testCase := range testCases {
244
+ testCase := testCase
245
+ t .Run (testCase .name , func (t * testing.T ) {
246
+ t .Parallel ()
247
+ actual := convertProvisionerJob (testCase .input )
248
+ assert .Equal (t , testCase .expected , actual )
249
+ })
250
+ }
251
+ }
252
+
149
253
type fakePubSub struct {
150
254
t * testing.T
151
255
cond * sync.Cond
0 commit comments