github.com/cloudfoundry/cli@v7.1.0+incompatible/types/filtered_interface_test.go (about) 1 package types_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/types" 5 . "github.com/onsi/ginkgo" 6 . "github.com/onsi/gomega" 7 ) 8 9 var _ = Describe("FilteredInterface", func() { 10 var nullInterface FilteredInterface 11 12 Describe("UnmarshalJSON", func() { 13 When("a string value is provided", func() { 14 It("parses a out a valid FilteredInterface", func() { 15 err := nullInterface.UnmarshalJSON([]byte(`"some-string"`)) 16 Expect(err).ToNot(HaveOccurred()) 17 Expect(nullInterface).To(Equal(FilteredInterface{Value: "some-string", IsSet: true})) 18 }) 19 }) 20 21 When("an empty string value is provided", func() { 22 It("parses a out a valid FilteredInterface", func() { 23 err := nullInterface.UnmarshalJSON([]byte(`""`)) 24 Expect(err).ToNot(HaveOccurred()) 25 Expect(nullInterface).To(Equal(FilteredInterface{Value: "", IsSet: true})) 26 }) 27 }) 28 29 When("an integer value is provided", func() { 30 It("returns a string", func() { 31 err := nullInterface.UnmarshalJSON([]byte(`28`)) 32 Expect(err).ToNot(HaveOccurred()) 33 Expect(nullInterface).To(Equal(FilteredInterface{Value: float64(28), IsSet: true})) 34 }) 35 }) 36 37 When("a FilteredInterface is set to some boolean", func() { 38 It("returns a string", func() { 39 err := nullInterface.UnmarshalJSON([]byte(`true`)) 40 Expect(err).ToNot(HaveOccurred()) 41 Expect(nullInterface).To(Equal(FilteredInterface{Value: true, IsSet: true})) 42 }) 43 }) 44 45 When("JSON values provided", func() { 46 It("parses a out a valid FilteredInterface", func() { 47 err := nullInterface.UnmarshalJSON([]byte(`{"json":"{\"key\":\"value\"}"}`)) 48 Expect(err).ToNot(HaveOccurred()) 49 Expect(nullInterface).To(Equal(FilteredInterface{ 50 Value: map[string]interface{}{"json": "{\"key\":\"value\"}"}, 51 IsSet: true})) 52 }) 53 }) 54 55 When("an empty JSON is provided", func() { 56 It("parses a out a valid FilteredInterface", func() { 57 err := nullInterface.UnmarshalJSON([]byte("null")) 58 Expect(err).ToNot(HaveOccurred()) 59 Expect(nullInterface).To(Equal(FilteredInterface{Value: nil, IsSet: true})) 60 }) 61 }) 62 }) 63 64 Describe("MarshalJSON", func() { 65 When("a FilteredInterface is set to some string", func() { 66 It("returns a string", func() { 67 nullInterface = FilteredInterface{Value: "some-string", IsSet: true} 68 marshalled, err := nullInterface.MarshalJSON() 69 Expect(err).ToNot(HaveOccurred()) 70 Expect(marshalled).To(Equal([]byte(`"some-string"`))) 71 }) 72 }) 73 74 When("a FilteredInterface is set to some number", func() { 75 It("returns a string", func() { 76 nullInterface = FilteredInterface{Value: 28, IsSet: true} 77 marshalled, err := nullInterface.MarshalJSON() 78 Expect(err).ToNot(HaveOccurred()) 79 Expect(marshalled).To(Equal([]byte(`28`))) 80 }) 81 }) 82 83 When("a FilteredInterface is set to some boolean", func() { 84 It("returns a string", func() { 85 nullInterface = FilteredInterface{Value: true, IsSet: true} 86 marshalled, err := nullInterface.MarshalJSON() 87 Expect(err).ToNot(HaveOccurred()) 88 Expect(marshalled).To(Equal([]byte(`true`))) 89 }) 90 }) 91 92 When("a FilteredInterface is set to some object", func() { 93 It("returns a flattened string", func() { 94 nullInterface = FilteredInterface{ 95 Value: map[string]interface{}{ 96 "json": map[string]interface{}{ 97 "key": "value", 98 }, 99 }, 100 IsSet: true, 101 } 102 marshalled, err := nullInterface.MarshalJSON() 103 Expect(err).ToNot(HaveOccurred()) 104 Expect(marshalled).To(Equal([]byte(`{"json":{"key":"value"}}`))) 105 }) 106 }) 107 108 When("a FilteredInterface is not set", func() { 109 It("returns null", func() { 110 nullInterface = FilteredInterface{IsSet: false} 111 marshalled, err := nullInterface.MarshalJSON() 112 Expect(err).ToNot(HaveOccurred()) 113 Expect(marshalled).To(Equal([]byte(`null`))) 114 }) 115 }) 116 }) 117 })