github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/command/flag/org_role_test.go (about)

     1  package flag_test
     2  
     3  import (
     4  	. "code.cloudfoundry.org/cli/command/flag"
     5  
     6  	flags "github.com/jessevdk/go-flags"
     7  	. "github.com/onsi/ginkgo"
     8  	. "github.com/onsi/ginkgo/extensions/table"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("OrgRole", func() {
    13  	var orgRole OrgRole
    14  
    15  	Describe("UnmarshalFlag", func() {
    16  		BeforeEach(func() {
    17  			orgRole = OrgRole{}
    18  		})
    19  
    20  		It("accepts OrgManager", func() {
    21  			err := orgRole.UnmarshalFlag("orgmanager")
    22  			Expect(err).ToNot(HaveOccurred())
    23  			Expect(orgRole).To(Equal(OrgRole{Role: "OrgManager"}))
    24  		})
    25  
    26  		It("accepts BillingManager", func() {
    27  			err := orgRole.UnmarshalFlag("Billingmanager")
    28  			Expect(err).ToNot(HaveOccurred())
    29  			Expect(orgRole).To(Equal(OrgRole{Role: "BillingManager"}))
    30  		})
    31  
    32  		It("accepts OrgAuditor", func() {
    33  			err := orgRole.UnmarshalFlag("orgAuditor")
    34  			Expect(err).ToNot(HaveOccurred())
    35  			Expect(orgRole).To(Equal(OrgRole{Role: "OrgAuditor"}))
    36  		})
    37  
    38  		It("errors on anything else", func() {
    39  			err := orgRole.UnmarshalFlag("I AM A BANANANANANANANANA")
    40  			Expect(err).To(MatchError(&flags.Error{
    41  				Type:    flags.ErrRequired,
    42  				Message: `ROLE must be "OrgManager", "BillingManager" and "OrgAuditor"`,
    43  			}))
    44  			Expect(orgRole.Role).To(BeEmpty())
    45  		})
    46  	})
    47  
    48  	Describe("Complete", func() {
    49  		DescribeTable("returns list of completions",
    50  			func(prefix string, matches []flags.Completion) {
    51  				completions := orgRole.Complete(prefix)
    52  				Expect(completions).To(Equal(matches))
    53  			},
    54  
    55  			Entry("returns 'OrgManager' and 'OrgAuditor' when passed 'O'",
    56  				"O",
    57  				[]flags.Completion{{Item: "OrgManager"}, {Item: "OrgAuditor"}}),
    58  			Entry("returns 'OrgManager' and 'OrgAuditor' when passed 'o'",
    59  				"o",
    60  				[]flags.Completion{{Item: "OrgManager"}, {Item: "OrgAuditor"}}),
    61  			Entry("returns 'BillingManager' when passed 'B'",
    62  				"B",
    63  				[]flags.Completion{{Item: "BillingManager"}}),
    64  			Entry("returns 'BillingManager' when passed 'b'",
    65  				"b",
    66  				[]flags.Completion{{Item: "BillingManager"}}),
    67  			Entry("completes to 'OrgAuditor' when passed 'Orga'",
    68  				"Orga",
    69  				[]flags.Completion{{Item: "OrgAuditor"}}),
    70  			Entry("completes to 'OrgManager' when passed 'Orgm'",
    71  				"Orgm",
    72  				[]flags.Completion{{Item: "OrgManager"}}),
    73  			Entry("returns 'OrgManager', 'BillingManager' and 'OrgAuditor' when passed nothing",
    74  				"",
    75  				[]flags.Completion{{Item: "OrgManager"}, {Item: "BillingManager"}, {Item: "OrgAuditor"}}),
    76  			Entry("completes to nothing when passed 'wut'",
    77  				"wut",
    78  				[]flags.Completion{}),
    79  		)
    80  	})
    81  })