github.com/MontFerret/ferret@v0.18.0/pkg/stdlib/objects/has_test.go (about) 1 package objects_test 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/MontFerret/ferret/pkg/runtime/values" 8 "github.com/MontFerret/ferret/pkg/stdlib/objects" 9 10 . "github.com/smartystreets/goconvey/convey" 11 ) 12 13 func TestHas(t *testing.T) { 14 Convey("When key exists", t, func() { 15 obj := values.NewObjectWith( 16 values.NewObjectProperty("key", values.NewString("val")), 17 ) 18 19 val, err := objects.Has(context.Background(), obj, values.NewString("key")) 20 valBool := val.(values.Boolean) 21 22 So(err, ShouldEqual, nil) 23 So(valBool, ShouldEqual, values.NewBoolean(true)) 24 So(bool(valBool), ShouldEqual, true) 25 }) 26 27 Convey("When key doesn't exists", t, func() { 28 obj := values.NewObjectWith( 29 values.NewObjectProperty("anyOtherKey", values.NewString("val")), 30 ) 31 32 val, err := objects.Has(context.Background(), obj, values.NewString("key")) 33 valBool := val.(values.Boolean) 34 35 So(err, ShouldEqual, nil) 36 So(valBool, ShouldEqual, values.NewBoolean(false)) 37 So(bool(valBool), ShouldEqual, false) 38 }) 39 40 Convey("When there are no keys", t, func() { 41 obj := values.NewObject() 42 43 val, err := objects.Has(context.Background(), obj, values.NewString("key")) 44 valBool := val.(values.Boolean) 45 46 So(err, ShouldEqual, nil) 47 So(valBool, ShouldEqual, values.NewBoolean(false)) 48 So(bool(valBool), ShouldEqual, false) 49 }) 50 51 Convey("Not enought arguments", t, func() { 52 val, err := objects.Has(context.Background()) 53 54 So(err, ShouldBeError) 55 So(val, ShouldEqual, values.None) 56 57 val, err = objects.Has(context.Background(), values.NewObject()) 58 59 So(err, ShouldBeError) 60 So(val, ShouldEqual, values.None) 61 }) 62 63 Convey("When keyName isn't string", t, func() { 64 obj := values.NewObject() 65 key := values.NewInt(1) 66 67 val, err := objects.Has(context.Background(), obj, key) 68 69 So(err, ShouldBeError) 70 So(val, ShouldEqual, values.None) 71 }) 72 73 Convey("When first argument isn't object", t, func() { 74 notObj := values.NewInt(1) 75 76 val, err := objects.Has(context.Background(), notObj, values.NewString("key")) 77 78 So(err, ShouldBeError) 79 So(val, ShouldEqual, values.None) 80 }) 81 }