MCPcopy
hub / github.com/gofiber/fiber / Test_Bind_Query

Function Test_Bind_Query

bind_test.go:393–473  ·  view source on GitHub ↗

go test -run Test_Bind_Query -v

(t *testing.T)

Source from the content-addressed store, hash-verified

391
392// go test -run Test_Bind_Query -v
393func Test_Bind_Query(t *testing.T) {
394 t.Parallel()
395 app := New(Config{
396 EnableSplittingOnParsers: true,
397 })
398 c := app.AcquireCtx(&fasthttp.RequestCtx{})
399
400 type Query struct {
401 Name string
402 Hobby []string
403 ID int
404 }
405 c.Request().SetBody([]byte(``))
406 c.Request().Header.SetContentType("")
407 c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball&hobby=football")
408 q := new(Query)
409 require.NoError(t, c.Bind().Query(q))
410 require.Len(t, q.Hobby, 2)
411
412 c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball,football")
413 q = new(Query)
414 require.NoError(t, c.Bind().Query(q))
415 require.Len(t, q.Hobby, 2)
416
417 c.Request().URI().SetQueryString("id=1&name=tom&hobby=soccer&hobby=basketball,football")
418 q = new(Query)
419 require.NoError(t, c.Bind().Query(q))
420 require.Len(t, q.Hobby, 3)
421
422 empty := new(Query)
423 c.Request().URI().SetQueryString("")
424 require.NoError(t, c.Bind().Query(empty))
425 require.Empty(t, empty.Hobby)
426
427 type Query2 struct {
428 Name string
429 Hobby string
430 Default string `query:"default,default:hello"`
431 FavouriteDrinks []string
432 Empty []string
433 Alloc []string
434 Defaults []string `query:"defaults,default:hello|world"`
435 No []int64
436 ID int
437 Bool bool
438 }
439
440 c.Request().URI().SetQueryString("id=1&name=tom&hobby=basketball,football&favouriteDrinks=milo,coke,pepsi&alloc=&no=1")
441 q2 := new(Query2)
442 q2.Bool = true
443 q2.Name = helloWorld
444 require.NoError(t, c.Bind().Query(q2))
445 require.Equal(t, "basketball,football", q2.Hobby)
446 require.True(t, q2.Bool)
447 require.Equal(t, "tom", q2.Name) // check value get overwritten
448 require.Equal(t, []string{"milo", "coke", "pepsi"}, q2.FavouriteDrinks)
449 var nilSlice []string
450 require.Equal(t, nilSlice, q2.Empty)

Callers

nothing calls this directly

Calls 8

AcquireCtxMethod · 0.80
URIMethod · 0.80
NewFunction · 0.70
RequestMethod · 0.65
QueryMethod · 0.65
BindMethod · 0.65
LenMethod · 0.65
ErrorMethod · 0.65

Tested by

no test coverage detected