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  }