github.com/sleungcy/cli@v7.1.0+incompatible/command/v6/v3_cancel_zdt_push_command_test.go (about) 1 package v6_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/command/commandfakes" 9 "code.cloudfoundry.org/cli/command/flag" 10 . "code.cloudfoundry.org/cli/command/v6" 11 "code.cloudfoundry.org/cli/command/v6/v6fakes" 12 "code.cloudfoundry.org/cli/util/configv3" 13 "code.cloudfoundry.org/cli/util/ui" 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("v3-cancel-deployment Command", func() { 20 var ( 21 cmd V3CancelZdtPushCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeV3CancelZdtPushActor *v6fakes.FakeV3CancelZdtPushActor 26 executeErr error 27 app string 28 userName string 29 spaceName string 30 orgName string 31 binaryName string 32 ) 33 34 BeforeEach(func() { 35 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 36 fakeConfig = new(commandfakes.FakeConfig) 37 fakeSharedActor = new(commandfakes.FakeSharedActor) 38 fakeV3CancelZdtPushActor = new(v6fakes.FakeV3CancelZdtPushActor) 39 40 app = "some-app" 41 userName = "banana" 42 spaceName = "some-space" 43 orgName = "some-org" 44 45 cmd = V3CancelZdtPushCommand{ 46 RequiredArgs: flag.AppName{AppName: app}, 47 48 UI: testUI, 49 Config: fakeConfig, 50 CancelZdtPushActor: fakeV3CancelZdtPushActor, 51 SharedActor: fakeSharedActor, 52 } 53 }) 54 55 JustBeforeEach(func() { 56 executeErr = cmd.Execute(nil) 57 }) 58 59 It("displays the experimental warning", func() { 60 Expect(testUI.Err).To(Say("This command is in EXPERIMENTAL stage and may change without notice")) 61 }) 62 63 When("the user is not logged in", func() { 64 var expectedErr error 65 66 BeforeEach(func() { 67 expectedErr = errors.New("some current user error") 68 fakeConfig.CurrentUserReturns(configv3.User{}, expectedErr) 69 }) 70 71 It("return an error", func() { 72 Expect(executeErr).To(Equal(expectedErr)) 73 }) 74 }) 75 76 Context("when checking target fails", func() { 77 BeforeEach(func() { 78 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 79 }) 80 81 It("returns an error", func() { 82 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 83 84 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 85 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 86 Expect(checkTargetedOrg).To(BeTrue()) 87 Expect(checkTargetedSpace).To(BeTrue()) 88 }) 89 }) 90 91 Context("when the user is logged in", func() { 92 BeforeEach(func() { 93 fakeConfig.CurrentUserReturns(configv3.User{Name: userName}, nil) 94 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: spaceName, GUID: "some-space-guid"}) 95 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: orgName, GUID: "some-org-guid"}) 96 fakeV3CancelZdtPushActor.CancelDeploymentByAppNameAndSpaceReturns(v3action.Warnings{"get-warning"}, errors.New("some-error")) 97 }) 98 99 It("cancels the deployment", func() { 100 Expect(fakeV3CancelZdtPushActor.CancelDeploymentByAppNameAndSpaceCallCount()).To(Equal(1)) 101 appName, spaceGuid := fakeV3CancelZdtPushActor.CancelDeploymentByAppNameAndSpaceArgsForCall(0) 102 Expect(appName).To(Equal(app)) 103 Expect(spaceGuid).To(Equal("some-space-guid")) 104 105 Expect(executeErr).To(MatchError("some-error")) 106 Expect(testUI.Err).To(Say("get-warning")) 107 }) 108 109 Context("when the application doesn't exist", func() { 110 var expectedErr error 111 112 BeforeEach(func() { 113 expectedErr = errors.New("dropped iphone error") 114 fakeV3CancelZdtPushActor.CancelDeploymentByAppNameAndSpaceReturns(v3action.Warnings{"get-warning"}, expectedErr) 115 }) 116 It("displays the warnings and error", func() { 117 Expect(executeErr).To(MatchError(expectedErr)) 118 119 Expect(testUI.Err).To(Say("get-warning")) 120 Expect(testUI.Out).ToNot(Say("app some-app in org some-org / space some-space as banana...")) 121 }) 122 }) 123 }) 124 })