github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/command/flag/space_role_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/ginkgo/extensions/table"
     8  	. "github.com/onsi/gomega"
     9  )
    10  
    11  var _ = Describe("SpaceRole", func() {
    12  	var spaceRole SpaceRole
    13  
    14  	Describe("Complete", func() {
    15  		DescribeTable("returns list of completions",
    16  			func(prefix string, matches []flags.Completion) {
    17  				completions := spaceRole.Complete(prefix)
    18  				Expect(completions).To(Equal(matches))
    19  			},
    20  			Entry("returns 'SpaceManager', 'SpaceDeveloper' and 'SpaceAuditor' when passed 'S'", "S",
    21  				[]flags.Completion{{Item: "SpaceManager"}, {Item: "SpaceDeveloper"}, {Item: "SpaceAuditor"}}),
    22  			Entry("returns 'SpaceManager', 'SpaceDeveloper' and 'SpaceAuditor' when passed 's'", "s",
    23  				[]flags.Completion{{Item: "SpaceManager"}, {Item: "SpaceDeveloper"}, {Item: "SpaceAuditor"}}),
    24  			Entry("completes to 'SpaceAuditor' when passed 'Spacea'", "Spacea",
    25  				[]flags.Completion{{Item: "SpaceAuditor"}}),
    26  			Entry("completes to 'SpaceDeveloper' when passed 'Spaced'", "Spaced",
    27  				[]flags.Completion{{Item: "SpaceDeveloper"}}),
    28  			Entry("completes to 'SpaceManager' when passed 'Spacem'", "Spacem",
    29  				[]flags.Completion{{Item: "SpaceManager"}}),
    30  			Entry("completes to 'SpaceManager' when passed 'spacEM'", "spacEM",
    31  				[]flags.Completion{{Item: "SpaceManager"}}),
    32  			Entry("returns 'SpaceManager', 'SpaceDeveloper' and 'SpaceAuditor' when passed nothing", "",
    33  				[]flags.Completion{{Item: "SpaceManager"}, {Item: "SpaceDeveloper"}, {Item: "SpaceAuditor"}}),
    34  			Entry("completes to nothing when passed 'wut'", "wut",
    35  				[]flags.Completion{}),
    36  		)
    37  	})
    38  
    39  	Describe("UnmarshalFlag", func() {
    40  		BeforeEach(func() {
    41  			spaceRole = SpaceRole{}
    42  		})
    43  
    44  		It("accepts SpaceManager", func() {
    45  			err := spaceRole.UnmarshalFlag("spacemanager")
    46  			Expect(err).ToNot(HaveOccurred())
    47  			Expect(spaceRole).To(Equal(SpaceRole{Role: "SpaceManager"}))
    48  		})
    49  
    50  		It("accepts SpaceDeveloper", func() {
    51  			err := spaceRole.UnmarshalFlag("Spacedeveloper")
    52  			Expect(err).ToNot(HaveOccurred())
    53  			Expect(spaceRole).To(Equal(SpaceRole{Role: "SpaceDeveloper"}))
    54  		})
    55  
    56  		It("accepts SpaceAuditor", func() {
    57  			err := spaceRole.UnmarshalFlag("spaceAuditor")
    58  			Expect(err).ToNot(HaveOccurred())
    59  			Expect(spaceRole).To(Equal(SpaceRole{Role: "SpaceAuditor"}))
    60  		})
    61  
    62  		It("errors on anything else", func() {
    63  			err := spaceRole.UnmarshalFlag("I AM A BANANANANANANANANA")
    64  			Expect(err).To(MatchError(&flags.Error{
    65  				Type:    flags.ErrRequired,
    66  				Message: `ROLE must be "SpaceManager", "SpaceDeveloper" and "SpaceAuditor"`,
    67  			}))
    68  			Expect(spaceRole.Role).To(BeEmpty())
    69  		})
    70  	})
    71  })