github.com/cloudfoundry-community/cloudfoundry-cli@v6.44.1-0.20240130060226-cda5ed8e89a5+incompatible/types/null_bytesize_in_mb_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("NullByteSizeInMb", func() {
    10  	var nullByteSize NullByteSizeInMb
    11  
    12  	BeforeEach(func() {
    13  		nullByteSize = NullByteSizeInMb{}
    14  	})
    15  
    16  	Describe("String", func() {
    17  		When("a NullByteSize value is not set", func() {
    18  			It("returns an empty string", func() {
    19  				nullByteSize.IsSet = false
    20  				returnedString := nullByteSize.String()
    21  				Expect(returnedString).To(Equal(""))
    22  			})
    23  		})
    24  
    25  		When("a NullByteSize value is set", func() {
    26  			When("NullByteSize value is in megabytes", func() {
    27  				It("returns a formatted byte size", func() {
    28  					nullByteSize.IsSet = true
    29  					nullByteSize.Value = 1024
    30  					returnedString := nullByteSize.String()
    31  					Expect(returnedString).To(Equal("1G"))
    32  				})
    33  			})
    34  		})
    35  	})
    36  
    37  	Describe("ParseStringValue", func() {
    38  		When("the empty string is provided", func() {
    39  			It("sets IsSet to false", func() {
    40  				err := nullByteSize.ParseStringValue("")
    41  				Expect(err).ToNot(HaveOccurred())
    42  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 0, IsSet: false}))
    43  			})
    44  		})
    45  
    46  		When("an invalid byte size is provided", func() {
    47  			It("returns an error", func() {
    48  				err := nullByteSize.ParseStringValue("abcdef")
    49  				Expect(err).To(HaveOccurred())
    50  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 0, IsSet: false}))
    51  			})
    52  		})
    53  
    54  		When("a unit size is not provided", func() {
    55  			It("returns an error", func() {
    56  				err := nullByteSize.ParseStringValue("1")
    57  				Expect(err).To(HaveOccurred())
    58  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 0, IsSet: false}))
    59  			})
    60  		})
    61  
    62  		When("a valid byte size is provided", func() {
    63  			It("stores the integer and sets IsSet to true", func() {
    64  				err := nullByteSize.ParseStringValue("1G")
    65  				Expect(err).ToNot(HaveOccurred())
    66  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 1024, IsSet: true}))
    67  			})
    68  		})
    69  	})
    70  
    71  	Describe("ParseUint64Value", func() {
    72  		When("nil is provided", func() {
    73  			It("sets IsSet to false", func() {
    74  				nullByteSize.ParseUint64Value(nil)
    75  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 0, IsSet: false}))
    76  			})
    77  		})
    78  
    79  		When("non-nil pointer is provided", func() {
    80  			It("sets IsSet to true and Value to provided value", func() {
    81  				n := uint64(5)
    82  				nullByteSize.ParseUint64Value(&n)
    83  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 5, IsSet: true}))
    84  			})
    85  		})
    86  	})
    87  
    88  	Describe("UnmarshalJSON", func() {
    89  		When("integer value is provided", func() {
    90  			It("parses JSON number correctly", func() {
    91  				err := nullByteSize.UnmarshalJSON([]byte("42"))
    92  				Expect(err).ToNot(HaveOccurred())
    93  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 42, IsSet: true}))
    94  			})
    95  		})
    96  
    97  		When("empty json is provided", func() {
    98  			It("returns an unset NullUint64", func() {
    99  				err := nullByteSize.UnmarshalJSON([]byte(`""`))
   100  				Expect(err).ToNot(HaveOccurred())
   101  				Expect(nullByteSize).To(Equal(NullByteSizeInMb{Value: 0, IsSet: false}))
   102  			})
   103  		})
   104  	})
   105  })