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  })