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 })