@@ -3,6 +3,7 @@ package kid
3
3
import (
4
4
"encoding/json"
5
5
"encoding/xml"
6
+ "errors"
6
7
"fmt"
7
8
"net/http"
8
9
"net/http/httptest"
@@ -11,11 +12,18 @@ import (
11
12
"strings"
12
13
"testing"
13
14
14
- "github.com/mojixcoder/kid/errors"
15
15
htmlrenderer "github.com/mojixcoder/kid/html_renderer"
16
16
"github.com/stretchr/testify/assert"
17
17
)
18
18
19
+ type errWriter struct {
20
+ * httptest.ResponseRecorder
21
+ }
22
+
23
+ func (errWriter ) Write (blob []byte ) (int , error ) {
24
+ return 0 , errors .New ("new err" )
25
+ }
26
+
19
27
type person struct {
20
28
Name string `json:"name" xml:"name"`
21
29
Age int `json:"age" xml:"age"`
@@ -238,11 +246,26 @@ func TestContext_ReadJSON(t *testing.T) {
238
246
ctx .reset (req , res )
239
247
240
248
var p2 person
241
- httpErr := ctx .ReadJSON (& p2 ).(* errors.HTTPError )
249
+ err = ctx .ReadJSON (& p2 )
250
+
251
+ assert .Error (t , err )
252
+ }
253
+
254
+ func TestContext_mustWrite (t * testing.T ) {
255
+ ctx := newContext (New ())
256
+
257
+ res := httptest .NewRecorder ()
258
+ ctx .reset (nil , res )
259
+
260
+ ctx .mustWrite ([]byte ("byte" ))
261
+
262
+ assert .Equal (t , "byte" , res .Body .String ())
263
+
264
+ ctx .reset (nil , errWriter {res })
242
265
243
- assert .Error (t , httpErr )
244
- assert . Error ( t , httpErr . Err )
245
- assert . Equal ( t , http . StatusBadRequest , httpErr . Code )
266
+ assert .Panics (t , func () {
267
+ ctx . mustWrite ([] byte ( "byte" ) )
268
+ } )
246
269
}
247
270
248
271
func TestContext_JSON (t * testing.T ) {
@@ -253,9 +276,8 @@ func TestContext_JSON(t *testing.T) {
253
276
ctx .reset (nil , res )
254
277
255
278
p := person {Name : "foo" , Age : 1999 }
256
- err := ctx .JSON (http .StatusCreated , & p )
279
+ ctx .JSON (http .StatusCreated , & p )
257
280
258
- assert .NoError (t , err )
259
281
assert .Equal (t , http .StatusCreated , res .Code )
260
282
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
261
283
assert .Equal (t , "{\" name\" :\" foo\" ,\" age\" :1999}\n " , res .Body .String ())
@@ -264,11 +286,9 @@ func TestContext_JSON(t *testing.T) {
264
286
265
287
ctx .reset (nil , res )
266
288
267
- httpErr := ctx .JSON (http .StatusCreated , make (chan bool )).(* errors.HTTPError )
268
-
269
- assert .Error (t , httpErr )
270
- assert .Error (t , httpErr .Err )
271
- assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
289
+ assert .Panics (t , func () {
290
+ ctx .JSON (http .StatusCreated , make (chan bool ))
291
+ })
272
292
}
273
293
274
294
func TestContext_JSONIndent (t * testing.T ) {
@@ -279,9 +299,8 @@ func TestContext_JSONIndent(t *testing.T) {
279
299
ctx .reset (nil , res )
280
300
281
301
p := person {Name : "foo" , Age : 1999 }
282
- err := ctx .JSONIndent (http .StatusCreated , & p , " " )
302
+ ctx .JSONIndent (http .StatusCreated , & p , " " )
283
303
284
- assert .NoError (t , err )
285
304
assert .Equal (t , http .StatusCreated , res .Code )
286
305
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
287
306
assert .Equal (t , "{\n \" name\" : \" foo\" ,\n \" age\" : 1999\n }\n " , res .Body .String ())
@@ -290,11 +309,9 @@ func TestContext_JSONIndent(t *testing.T) {
290
309
291
310
ctx .reset (nil , res )
292
311
293
- httpErr := ctx .JSONIndent (http .StatusCreated , make (chan bool ), " " ).(* errors.HTTPError )
294
-
295
- assert .Error (t , httpErr )
296
- assert .Error (t , httpErr .Err )
297
- assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
312
+ assert .Panics (t , func () {
313
+ ctx .JSONIndent (http .StatusCreated , make (chan bool ), " " )
314
+ })
298
315
}
299
316
300
317
func TestContext_JSONByte (t * testing.T ) {
@@ -309,9 +326,8 @@ func TestContext_JSONByte(t *testing.T) {
309
326
blob , err := json .Marshal (p )
310
327
assert .NoError (t , err )
311
328
312
- err = ctx .JSONByte (http .StatusOK , blob )
329
+ ctx .JSONByte (http .StatusOK , blob )
313
330
314
- assert .NoError (t , err )
315
331
assert .Equal (t , http .StatusOK , res .Code )
316
332
assert .Equal (t , "application/json" , res .Header ().Get ("Content-Type" ))
317
333
assert .Equal (t , "{\" name\" :\" foo\" ,\" age\" :1999}" , res .Body .String ())
@@ -335,11 +351,9 @@ func TestContext_ReadXML(t *testing.T) {
335
351
ctx .reset (req , nil )
336
352
337
353
var p2 person
338
- httpErr : = ctx .ReadXML (& p2 ).( * errors. HTTPError )
354
+ err = ctx .ReadXML (& p2 )
339
355
340
- assert .Error (t , httpErr )
341
- assert .Error (t , httpErr .Err )
342
- assert .Equal (t , http .StatusBadRequest , httpErr .Code )
356
+ assert .Error (t , err )
343
357
}
344
358
345
359
func TestContext_XML (t * testing.T ) {
@@ -350,9 +364,8 @@ func TestContext_XML(t *testing.T) {
350
364
ctx .reset (nil , res )
351
365
352
366
p := person {Name : "foo" , Age : 1999 }
353
- err := ctx .XML (http .StatusCreated , & p )
367
+ ctx .XML (http .StatusCreated , & p )
354
368
355
- assert .NoError (t , err )
356
369
assert .Equal (t , http .StatusCreated , res .Code )
357
370
assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
358
371
assert .Equal (t , "<person><name>foo</name><age>1999</age></person>" , res .Body .String ())
@@ -361,11 +374,9 @@ func TestContext_XML(t *testing.T) {
361
374
362
375
ctx .reset (nil , res )
363
376
364
- httpErr := ctx .XML (http .StatusCreated , make (chan bool )).(* errors.HTTPError )
365
-
366
- assert .Error (t , httpErr )
367
- assert .Error (t , httpErr .Err )
368
- assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
377
+ assert .Panics (t , func () {
378
+ ctx .XML (http .StatusCreated , make (chan bool ))
379
+ })
369
380
}
370
381
371
382
func TestContext_XMLIndent (t * testing.T ) {
@@ -376,9 +387,8 @@ func TestContext_XMLIndent(t *testing.T) {
376
387
ctx .reset (nil , res )
377
388
378
389
p := person {Name : "foo" , Age : 1999 }
379
- err := ctx .XMLIndent (http .StatusCreated , & p , " " )
390
+ ctx .XMLIndent (http .StatusCreated , & p , " " )
380
391
381
- assert .NoError (t , err )
382
392
assert .Equal (t , http .StatusCreated , res .Code )
383
393
assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
384
394
assert .Equal (t , "<person>\n <name>foo</name>\n <age>1999</age>\n </person>" , res .Body .String ())
@@ -387,11 +397,9 @@ func TestContext_XMLIndent(t *testing.T) {
387
397
388
398
ctx .reset (nil , res )
389
399
390
- httpErr := ctx .XMLIndent (http .StatusCreated , make (chan bool ), " " ).(* errors.HTTPError )
391
-
392
- assert .Error (t , httpErr )
393
- assert .Error (t , httpErr .Err )
394
- assert .Equal (t , http .StatusInternalServerError , httpErr .Code )
400
+ assert .Panics (t , func () {
401
+ ctx .XMLIndent (http .StatusCreated , make (chan bool ), " " )
402
+ })
395
403
}
396
404
397
405
func TestContext_XMLByte (t * testing.T ) {
@@ -406,9 +414,8 @@ func TestContext_XMLByte(t *testing.T) {
406
414
blob , err := xml .Marshal (p )
407
415
assert .NoError (t , err )
408
416
409
- err = ctx .XMLByte (http .StatusOK , blob )
417
+ ctx .XMLByte (http .StatusOK , blob )
410
418
411
- assert .NoError (t , err )
412
419
assert .Equal (t , http .StatusOK , res .Code )
413
420
assert .Equal (t , "application/xml" , res .Header ().Get ("Content-Type" ))
414
421
assert .Equal (t , "<person><name>foo</name><age>1999</age></person>" , res .Body .String ())
@@ -425,15 +432,14 @@ func TestContext_HTML(t *testing.T) {
425
432
res := httptest .NewRecorder ()
426
433
ctx .reset (nil , res )
427
434
428
- err := ctx .HTML (http .StatusAccepted , "index.html" , nil )
435
+ ctx .HTML (http .StatusAccepted , "index.html" , nil )
429
436
430
437
newLine := getNewLineStr ()
431
438
expectedRes := fmt .Sprintf (
432
439
"%s<html><body>%s<p>content</p>%s</body></html>%s" ,
433
440
newLine , newLine , newLine , newLine ,
434
441
)
435
442
436
- assert .NoError (t , err )
437
443
assert .Equal (t , http .StatusAccepted , res .Code )
438
444
assert .Equal (t , expectedRes , res .Body .String ())
439
445
assert .Equal (t , "text/html" , res .Header ().Get ("Content-Type" ))
@@ -445,11 +451,9 @@ func TestContext_HTMLString(t *testing.T) {
445
451
res := httptest .NewRecorder ()
446
452
ctx .reset (nil , res )
447
453
448
- err := ctx .HTMLString (http .StatusAccepted , "<p>Hello</p>" )
454
+ ctx .HTMLString (http .StatusAccepted , "<p>Hello</p>" )
449
455
450
- assert .NoError (t , err )
451
456
assert .Equal (t , http .StatusAccepted , res .Code )
452
457
assert .Equal (t , "<p>Hello</p>" , res .Body .String ())
453
458
assert .Equal (t , "text/html" , res .Header ().Get ("Content-Type" ))
454
-
455
459
}
0 commit comments