github.com/sleungcy/cli@v7.1.0+incompatible/command/flag/integer_limit_test.go (about)

     1  package flag_test
     2  
     3  import (
     4  	. "code.cloudfoundry.org/cli/command/flag"
     5  	flags "github.com/jessevdk/go-flags"
     6  	. "github.com/onsi/ginkgo"
     7  	. "github.com/onsi/gomega"
     8  )
     9  
    10  var _ = Describe("IntegerLimit", func() {
    11  	var limit IntegerLimit
    12  
    13  	BeforeEach(func() {
    14  		limit = IntegerLimit{}
    15  	})
    16  
    17  	Describe("UnmarshalFlag", func() {
    18  		When("the empty string is provided", func() {
    19  			It("sets IsSet to false", func() {
    20  				err := limit.UnmarshalFlag("")
    21  				Expect(err).ToNot(HaveOccurred())
    22  				Expect(limit).To(Equal(IntegerLimit{Value: 0, IsSet: false}))
    23  			})
    24  		})
    25  
    26  		When("an invalid value is provided", func() {
    27  			It("returns an error", func() {
    28  				err := limit.UnmarshalFlag("abcdef")
    29  				Expect(err).To(MatchError(&flags.Error{
    30  					Type:    flags.ErrRequired,
    31  					Message: "invalid integer limit (expected int >= -1)",
    32  				}))
    33  				Expect(limit).To(Equal(IntegerLimit{Value: 0, IsSet: false}))
    34  			})
    35  		})
    36  
    37  		When("an out of bounds integer is provided", func() {
    38  			It("returns an error", func() {
    39  				err := limit.UnmarshalFlag("-10")
    40  				Expect(err).To(MatchError(&flags.Error{
    41  					Type:    flags.ErrRequired,
    42  					Message: "invalid integer limit (expected int >= -1)",
    43  				}))
    44  			})
    45  		})
    46  
    47  		When("a valid integer is provided", func() {
    48  			It("stores the integer and sets IsSet to true", func() {
    49  				err := limit.UnmarshalFlag("-1")
    50  				Expect(err).ToNot(HaveOccurred())
    51  				Expect(limit).To(Equal(IntegerLimit{Value: -1, IsSet: true}))
    52  			})
    53  		})
    54  	})
    55  })