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

     1  package v7_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/command/flag"
     5  	. "code.cloudfoundry.org/cli/command/v7"
     6  	"code.cloudfoundry.org/cli/command/v7/v7fakes"
     7  	"code.cloudfoundry.org/cli/types"
     8  	. "github.com/onsi/ginkgo"
     9  	. "github.com/onsi/gomega"
    10  )
    11  
    12  var _ = Describe("set-label command", func() {
    13  	var (
    14  		cmd             SetLabelCommand
    15  		resourceName    string
    16  		fakeLabelSetter *v7fakes.FakeLabelSetter
    17  
    18  		executeErr error
    19  	)
    20  
    21  	BeforeEach(func() {
    22  		fakeLabelSetter = new(v7fakes.FakeLabelSetter)
    23  		cmd = SetLabelCommand{
    24  			LabelSetter: fakeLabelSetter,
    25  		}
    26  	})
    27  
    28  	When("some provided labels do not have a value part", func() {
    29  		BeforeEach(func() {
    30  			cmd.RequiredArgs = flag.SetLabelArgs{
    31  				ResourceType: "anything",
    32  				ResourceName: resourceName,
    33  				Labels:       []string{"FOO=BAR", "MISSING_EQUALS", "ENV=FAKE"},
    34  			}
    35  		})
    36  
    37  		It("complains about the missing equal sign", func() {
    38  			err := cmd.Execute(nil)
    39  			Expect(err).To(MatchError("Metadata error: no value provided for label 'MISSING_EQUALS'"))
    40  			Expect(err).To(HaveOccurred())
    41  		})
    42  	})
    43  
    44  	When("all the provided labels are valid", func() {
    45  		BeforeEach(func() {
    46  			cmd.RequiredArgs = flag.SetLabelArgs{
    47  				ResourceType: "anything",
    48  				ResourceName: resourceName,
    49  				Labels:       []string{"FOO=BAZ", "FOO=BAR", "ENV=FAKE"},
    50  			}
    51  			cmd.BuildpackStack = "some-stack"
    52  			cmd.ServiceBroker = "some-service-broker"
    53  			cmd.ServiceOffering = "some-service-offering"
    54  		})
    55  
    56  		It("calls execute with the right parameters", func() {
    57  			executeErr = cmd.Execute(nil)
    58  
    59  			Expect(executeErr).ToNot(HaveOccurred())
    60  			Expect(fakeLabelSetter.ExecuteCallCount()).To(Equal(1))
    61  			targetResource, labels := fakeLabelSetter.ExecuteArgsForCall(0)
    62  			Expect(targetResource.ResourceType).To(Equal(cmd.RequiredArgs.ResourceType))
    63  			Expect(targetResource.ResourceName).To(Equal(cmd.RequiredArgs.ResourceName))
    64  			Expect(targetResource.BuildpackStack).To(Equal(cmd.BuildpackStack))
    65  			Expect(targetResource.ServiceBroker).To(Equal(cmd.ServiceBroker))
    66  			Expect(targetResource.ServiceOffering).To(Equal(cmd.ServiceOffering))
    67  			Expect(labels).To(Equal(map[string]types.NullString{
    68  				"FOO": types.NewNullString("BAR"),
    69  				"ENV": types.NewNullString("FAKE"),
    70  			}))
    71  		})
    72  	})
    73  })