github.com/RevenueMonster/sqlike@v1.0.6/jsonb/array_test.go (about) 1 package jsonb 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestReadArray(t *testing.T) { 10 t.Run("with invalid value", func(t *testing.T) { 11 r := NewReader([]byte(`["sdasdasd"`)) 12 err := r.ReadArray(func(r *Reader) error { 13 return nil 14 }) 15 require.Error(t, err) 16 }) 17 18 t.Run("with null", func(t *testing.T) { 19 r := NewReader([]byte(`null`)) 20 err := r.ReadArray(func(r *Reader) error { 21 return nil 22 }) 23 require.NoError(t, err) 24 }) 25 26 t.Run("with empty array", func(t *testing.T) { 27 r := NewReader([]byte(`[]`)) 28 err := r.ReadArray(func(r *Reader) error { 29 return nil 30 }) 31 require.NoError(t, err) 32 }) 33 34 t.Run("with valid values", func(t *testing.T) { 35 items := []string{} 36 r := NewReader([]byte(`["[]int", "[]string" , "abc xyz"]`)) 37 err := r.ReadArray(func(r *Reader) error { 38 items = append(items, string(r.Bytes())) 39 return nil 40 }) 41 require.NoError(t, err) 42 require.ElementsMatch(t, []string{`"[]int"`, `"[]string"`, `"abc xyz"`}, items) 43 }) 44 }