github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v7action/label_test.go (about)

     1  package v7action_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	. "code.cloudfoundry.org/cli/actor/v7action"
     7  	"code.cloudfoundry.org/cli/actor/v7action/v7actionfakes"
     8  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
     9  	"code.cloudfoundry.org/cli/types"
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("UpdateApplicationLabelsByApplicationName", func() {
    15  	var (
    16  		actor                     *Actor
    17  		fakeCloudControllerClient *v7actionfakes.FakeCloudControllerClient
    18  		fakeSharedActor           *v7actionfakes.FakeSharedActor
    19  		fakeConfig                *v7actionfakes.FakeConfig
    20  		warnings                  Warnings
    21  		executeErr                error
    22  		resourceName              string
    23  		spaceGUID                 string
    24  		labels                    map[string]types.NullString
    25  	)
    26  
    27  	BeforeEach(func() {
    28  		fakeCloudControllerClient = new(v7actionfakes.FakeCloudControllerClient)
    29  		fakeSharedActor = new(v7actionfakes.FakeSharedActor)
    30  		fakeConfig = new(v7actionfakes.FakeConfig)
    31  		actor = NewActor(fakeCloudControllerClient, fakeConfig, fakeSharedActor, nil)
    32  	})
    33  
    34  	Context("UpdateApplicationLabelsByApplicationName", func() {
    35  		JustBeforeEach(func() {
    36  			warnings, executeErr = actor.UpdateApplicationLabelsByApplicationName(resourceName, spaceGUID, labels)
    37  		})
    38  
    39  		When("there are no client errors", func() {
    40  			BeforeEach(func() {
    41  				fakeCloudControllerClient.GetApplicationsReturns(
    42  					[]ccv3.Application{ccv3.Application{GUID: "some-guid"}},
    43  					ccv3.Warnings([]string{"warning-1", "warning-2"}),
    44  					nil,
    45  				)
    46  				fakeCloudControllerClient.UpdateApplicationReturns(
    47  					ccv3.Application{},
    48  					ccv3.Warnings{"set-app-labels-warnings"},
    49  					nil,
    50  				)
    51  			})
    52  
    53  			It("sets the app labels", func() {
    54  				Expect(fakeCloudControllerClient.UpdateApplicationCallCount()).To(Equal(1))
    55  				sentApp := fakeCloudControllerClient.UpdateApplicationArgsForCall(0)
    56  				Expect(executeErr).ToNot(HaveOccurred())
    57  				Expect(sentApp.Metadata.Labels).To(BeEquivalentTo(labels))
    58  			})
    59  
    60  			It("aggregates warnings", func() {
    61  				Expect(warnings).To(ConsistOf("warning-1", "warning-2", "set-app-labels-warnings"))
    62  			})
    63  		})
    64  
    65  		When("there are client errors", func() {
    66  			When("GetApplications fails", func() {
    67  				BeforeEach(func() {
    68  					fakeCloudControllerClient.GetApplicationsReturns(
    69  						[]ccv3.Application{ccv3.Application{GUID: "some-guid"}},
    70  						ccv3.Warnings([]string{"warning-failure-1", "warning-failure-2"}),
    71  						errors.New("get-apps-error"),
    72  					)
    73  				})
    74  
    75  				It("returns the error and all warnings", func() {
    76  					Expect(executeErr).To(HaveOccurred())
    77  					Expect(warnings).To(ConsistOf("warning-failure-1", "warning-failure-2"))
    78  					Expect(executeErr).To(MatchError("get-apps-error"))
    79  				})
    80  			})
    81  
    82  			When("UpdateApplication fails", func() {
    83  				BeforeEach(func() {
    84  					fakeCloudControllerClient.GetApplicationsReturns(
    85  						[]ccv3.Application{ccv3.Application{GUID: "some-guid"}},
    86  						ccv3.Warnings([]string{"warning-1", "warning-2"}),
    87  						nil,
    88  					)
    89  					fakeCloudControllerClient.UpdateApplicationReturns(
    90  						ccv3.Application{},
    91  						ccv3.Warnings{"set-app-labels-warnings"},
    92  						errors.New("update-application-error"),
    93  					)
    94  				})
    95  
    96  				It("returns the error and all warnings", func() {
    97  					Expect(executeErr).To(HaveOccurred())
    98  					Expect(warnings).To(ConsistOf("warning-1", "warning-2", "set-app-labels-warnings"))
    99  					Expect(executeErr).To(MatchError("update-application-error"))
   100  				})
   101  			})
   102  
   103  		})
   104  	})
   105  
   106  	Context("UpdateOrganizationLabelsByOrganizationName", func() {
   107  		JustBeforeEach(func() {
   108  			warnings, executeErr = actor.UpdateOrganizationLabelsByOrganizationName(resourceName, labels)
   109  		})
   110  
   111  		When("there are no client errors", func() {
   112  			BeforeEach(func() {
   113  				fakeCloudControllerClient.GetOrganizationsReturns(
   114  					[]ccv3.Organization{ccv3.Organization{GUID: "some-guid"}},
   115  					ccv3.Warnings([]string{"warning-1", "warning-2"}),
   116  					nil,
   117  				)
   118  				fakeCloudControllerClient.UpdateOrganizationReturns(
   119  					ccv3.Organization{},
   120  					ccv3.Warnings{"set-org"},
   121  					nil,
   122  				)
   123  			})
   124  
   125  			It("sets the org labels", func() {
   126  				Expect(fakeCloudControllerClient.UpdateOrganizationCallCount()).To(Equal(1))
   127  				sentOrg := fakeCloudControllerClient.UpdateOrganizationArgsForCall(0)
   128  				Expect(executeErr).ToNot(HaveOccurred())
   129  				Expect(sentOrg.Metadata.Labels).To(BeEquivalentTo(labels))
   130  			})
   131  
   132  			It("aggregates warnings", func() {
   133  				Expect(warnings).To(ConsistOf("warning-1", "warning-2", "set-org"))
   134  			})
   135  		})
   136  
   137  		When("there are client errors", func() {
   138  			When("fetching the organization fails", func() {
   139  				BeforeEach(func() {
   140  					fakeCloudControllerClient.GetOrganizationsReturns(
   141  						[]ccv3.Organization{ccv3.Organization{GUID: "some-guid"}},
   142  						ccv3.Warnings([]string{"warning-failure-1", "warning-failure-2"}),
   143  						errors.New("get-orgs-error"),
   144  					)
   145  				})
   146  
   147  				It("returns the error and all warnings", func() {
   148  					Expect(executeErr).To(HaveOccurred())
   149  					Expect(warnings).To(ConsistOf("warning-failure-1", "warning-failure-2"))
   150  					Expect(executeErr).To(MatchError("get-orgs-error"))
   151  				})
   152  			})
   153  
   154  			When("updating the organization fails", func() {
   155  				BeforeEach(func() {
   156  					fakeCloudControllerClient.GetOrganizationsReturns(
   157  						[]ccv3.Organization{ccv3.Organization{GUID: "some-guid"}},
   158  						ccv3.Warnings([]string{"warning-1", "warning-2"}),
   159  						nil,
   160  					)
   161  					fakeCloudControllerClient.UpdateOrganizationReturns(
   162  						ccv3.Organization{},
   163  						ccv3.Warnings{"set-org"},
   164  						errors.New("update-orgs-error"),
   165  					)
   166  				})
   167  				It("returns the error and all warnings", func() {
   168  					Expect(executeErr).To(HaveOccurred())
   169  					Expect(warnings).To(ConsistOf("warning-1", "warning-2", "set-org"))
   170  					Expect(executeErr).To(MatchError("update-orgs-error"))
   171  				})
   172  			})
   173  		})
   174  	})
   175  })