github.com/RevenueMonster/sqlike@v1.0.6/sql/expr/json_test.go (about) 1 package expr 2 3 import ( 4 "encoding/json" 5 "testing" 6 7 "github.com/RevenueMonster/sqlike/sqlike/primitive" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestJSON(t *testing.T) { 12 var ( 13 it interface{} 14 ) 15 16 t.Run("JSON_QUOTE", func(tst *testing.T) { 17 it = JSON_QUOTE("a") 18 require.Equal(tst, primitive.JSONFunc{ 19 Type: primitive.JSON_QUOTE, 20 Args: []interface{}{ 21 primitive.Value{Raw: "a"}, 22 }, 23 }, it) 24 }) 25 26 t.Run("JSON_CONTAINS", func(tst *testing.T) { 27 it = JSON_CONTAINS(Column("a"), Column("b")) 28 require.Equal(tst, primitive.JSONFunc{ 29 Type: primitive.JSON_CONTAINS, 30 Args: []interface{}{ 31 primitive.Column{Name: "a"}, 32 primitive.Column{Name: "b"}, 33 }, 34 }, it) 35 36 it = JSON_CONTAINS(`["a", "b"]`, Column("b")) 37 require.Equal(tst, primitive.JSONFunc{ 38 Type: primitive.JSON_CONTAINS, 39 Args: []interface{}{ 40 primitive.Value{Raw: `["a", "b"]`}, 41 primitive.Column{Name: "b"}, 42 }, 43 }, it) 44 45 raw := json.RawMessage(`["A","B","C"]`) 46 it = JSON_CONTAINS(raw, Column("b")) 47 require.Equal(tst, primitive.JSONFunc{ 48 Type: primitive.JSON_CONTAINS, 49 Args: []interface{}{ 50 primitive.Value{Raw: raw}, 51 primitive.Column{Name: "b"}, 52 }, 53 }, it) 54 }) 55 }