github.com/cloudfoundry/cli@v7.1.0+incompatible/types/filtered_string_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/ginkgo/extensions/table" 7 . "github.com/onsi/gomega" 8 ) 9 10 var _ = Describe("FilteredString", func() { 11 var nullString FilteredString 12 13 DescribeTable("ParseValue", 14 func(input string, expected FilteredString) { 15 nullString.ParseValue(input) 16 Expect(nullString).To(Equal(expected)) 17 }, 18 19 Entry("empty string", "", FilteredString{}), 20 Entry("default", "default", FilteredString{IsSet: true}), 21 Entry("null", "null", FilteredString{IsSet: true}), 22 Entry("some other string", "literally-anything-else", FilteredString{ 23 IsSet: true, 24 Value: "literally-anything-else", 25 }), 26 ) 27 28 DescribeTable("IsDefault", 29 func(input string, expected bool) { 30 nullString.ParseValue(input) 31 Expect(nullString.IsDefault()).To(Equal(expected)) 32 }, 33 34 Entry("empty string returns false", "", false), 35 Entry("default returns true", "default", true), 36 Entry("null returns true", "null", true), 37 Entry("some other string returns false", "literally-anything-else", false), 38 ) 39 40 Describe("UnmarshalJSON", func() { 41 When("a string value is provided", func() { 42 It("parses a out a valid FilteredString", func() { 43 err := nullString.UnmarshalJSON([]byte(`"some-string"`)) 44 Expect(err).ToNot(HaveOccurred()) 45 Expect(nullString).To(Equal(FilteredString{Value: "some-string", IsSet: true})) 46 }) 47 }) 48 49 When("an empty string value is provided", func() { 50 It("parses a out a valid FilteredString", func() { 51 err := nullString.UnmarshalJSON([]byte(`""`)) 52 Expect(err).ToNot(HaveOccurred()) 53 Expect(nullString).To(Equal(FilteredString{Value: "", IsSet: true})) 54 }) 55 }) 56 57 When("an empty JSON is provided", func() { 58 It("parses a out a valid FilteredString", func() { 59 err := nullString.UnmarshalJSON([]byte("null")) 60 Expect(err).ToNot(HaveOccurred()) 61 Expect(nullString).To(Equal(FilteredString{Value: "", IsSet: false})) 62 }) 63 }) 64 }) 65 66 Describe("MarshalJSON", func() { 67 When("a FilteredString is set to some string", func() { 68 It("returns a string", func() { 69 nullString = FilteredString{Value: "some-string", IsSet: true} 70 marshalled, err := nullString.MarshalJSON() 71 Expect(err).ToNot(HaveOccurred()) 72 Expect(marshalled).To(Equal([]byte(`"some-string"`))) 73 }) 74 }) 75 76 When("a FilteredString is set to an empty string", func() { 77 It("returns null", func() { 78 nullString = FilteredString{Value: "", IsSet: true} 79 marshalled, err := nullString.MarshalJSON() 80 Expect(err).ToNot(HaveOccurred()) 81 Expect(marshalled).To(Equal([]byte("null"))) 82 }) 83 }) 84 85 When("a FilteredString is not set", func() { 86 It("returns null", func() { 87 nullString = FilteredString{Value: "", IsSet: false} 88 marshalled, err := nullString.MarshalJSON() 89 Expect(err).ToNot(HaveOccurred()) 90 Expect(marshalled).To(Equal([]byte("null"))) 91 }) 92 }) 93 }) 94 })