github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+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  })