code.cloudfoundry.org/cli@v7.1.0+incompatible/actor/v3action/process_test.go (about) 1 package v3action_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 . "code.cloudfoundry.org/cli/actor/v3action" 8 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccerror" 10 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 11 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 12 "code.cloudfoundry.org/cli/types" 13 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 ) 17 18 var _ = Describe("Process Actions", func() { 19 var ( 20 actor *Actor 21 fakeCloudControllerClient *v3actionfakes.FakeCloudControllerClient 22 ) 23 24 BeforeEach(func() { 25 fakeCloudControllerClient = new(v3actionfakes.FakeCloudControllerClient) 26 actor = NewActor(fakeCloudControllerClient, nil, nil, nil) 27 }) 28 29 Describe("ScaleProcessByApplication", func() { 30 var passedProcess Process 31 32 BeforeEach(func() { 33 passedProcess = Process{ 34 Type: constant.ProcessTypeWeb, 35 Instances: types.NullInt{Value: 2, IsSet: true}, 36 MemoryInMB: types.NullUint64{Value: 100, IsSet: true}, 37 DiskInMB: types.NullUint64{Value: 200, IsSet: true}, 38 } 39 }) 40 41 When("no errors are encountered scaling the application process", func() { 42 BeforeEach(func() { 43 fakeCloudControllerClient.CreateApplicationProcessScaleReturns( 44 ccv3.Process{GUID: "some-process-guid"}, 45 ccv3.Warnings{"scale-process-warning"}, 46 nil) 47 }) 48 49 It("scales correct process", func() { 50 warnings, err := actor.ScaleProcessByApplication("some-app-guid", passedProcess) 51 52 Expect(err).ToNot(HaveOccurred()) 53 Expect(warnings).To(ConsistOf("scale-process-warning")) 54 55 Expect(fakeCloudControllerClient.CreateApplicationProcessScaleCallCount()).To(Equal(1)) 56 appGUIDArg, processArg := fakeCloudControllerClient.CreateApplicationProcessScaleArgsForCall(0) 57 Expect(appGUIDArg).To(Equal("some-app-guid")) 58 Expect(processArg).To(Equal(ccv3.Process{ 59 Type: constant.ProcessTypeWeb, 60 Instances: passedProcess.Instances, 61 MemoryInMB: passedProcess.MemoryInMB, 62 DiskInMB: passedProcess.DiskInMB, 63 })) 64 }) 65 }) 66 67 When("an error is encountered scaling the application process", func() { 68 var expectedErr error 69 70 BeforeEach(func() { 71 expectedErr = errors.New("scale process error") 72 fakeCloudControllerClient.CreateApplicationProcessScaleReturns( 73 ccv3.Process{GUID: "some-process-guid"}, 74 ccv3.Warnings{"scale-process-warning"}, 75 expectedErr) 76 }) 77 78 It("returns the error and all warnings", func() { 79 warnings, err := actor.ScaleProcessByApplication("some-app-guid", passedProcess) 80 Expect(err).To(MatchError(expectedErr)) 81 Expect(warnings).To(ConsistOf("scale-process-warning")) 82 }) 83 }) 84 85 When("a ProcessNotFoundError error is encountered scaling the application process", func() { 86 BeforeEach(func() { 87 fakeCloudControllerClient.CreateApplicationProcessScaleReturns( 88 ccv3.Process{GUID: "some-process-guid"}, 89 ccv3.Warnings{"scale-process-warning"}, 90 ccerror.ProcessNotFoundError{}, 91 ) 92 }) 93 94 It("returns the error and all warnings", func() { 95 warnings, err := actor.ScaleProcessByApplication("some-app-guid", passedProcess) 96 Expect(err).To(Equal(actionerror.ProcessNotFoundError{ProcessType: constant.ProcessTypeWeb})) 97 Expect(warnings).To(ConsistOf("scale-process-warning")) 98 }) 99 }) 100 }) 101 })