github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/set_droplet_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 "code.cloudfoundry.org/cli/actor/v7action" 8 "code.cloudfoundry.org/cli/command/commandfakes" 9 "code.cloudfoundry.org/cli/command/flag" 10 v7 "code.cloudfoundry.org/cli/command/v7" 11 "code.cloudfoundry.org/cli/command/v7/v7fakes" 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("set-droplet Command", func() { 20 var ( 21 cmd v7.SetDropletCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v7fakes.FakeSetDropletActor 26 binaryName string 27 executeErr error 28 app string 29 dropletGUID string 30 ) 31 32 BeforeEach(func() { 33 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 34 fakeConfig = new(commandfakes.FakeConfig) 35 fakeSharedActor = new(commandfakes.FakeSharedActor) 36 fakeActor = new(v7fakes.FakeSetDropletActor) 37 38 binaryName = "faceman" 39 fakeConfig.BinaryNameReturns(binaryName) 40 app = "some-app" 41 dropletGUID = "some-droplet-guid" 42 43 cmd = v7.SetDropletCommand{ 44 RequiredArgs: flag.AppName{AppName: app}, 45 DropletGUID: dropletGUID, 46 47 UI: testUI, 48 Config: fakeConfig, 49 SharedActor: fakeSharedActor, 50 Actor: fakeActor, 51 } 52 53 }) 54 55 JustBeforeEach(func() { 56 executeErr = cmd.Execute(nil) 57 }) 58 59 It("displays the experimental warning", func() { 60 Expect(testUI.Err).NotTo(Say("This command is in EXPERIMENTAL stage and may change without notice")) 61 }) 62 63 When("checking target fails", func() { 64 BeforeEach(func() { 65 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 66 }) 67 68 It("returns an error", func() { 69 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 70 71 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 72 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 73 Expect(checkTargetedOrg).To(BeTrue()) 74 Expect(checkTargetedSpace).To(BeTrue()) 75 }) 76 }) 77 78 When("the user is not logged in", func() { 79 var expectedErr error 80 81 BeforeEach(func() { 82 expectedErr = errors.New("some current user error") 83 fakeConfig.CurrentUserReturns(configv3.User{}, expectedErr) 84 }) 85 86 It("return an error", func() { 87 Expect(executeErr).To(Equal(expectedErr)) 88 }) 89 }) 90 91 When("the droplet has been set to the app", func() { 92 BeforeEach(func() { 93 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 94 Name: "some-org", 95 }) 96 fakeConfig.TargetedSpaceReturns(configv3.Space{ 97 Name: "some-space", 98 GUID: "some-space-guid", 99 }) 100 fakeConfig.CurrentUserReturns(configv3.User{Name: "steve"}, nil) 101 fakeActor.SetApplicationDropletByApplicationNameAndSpaceReturns(v7action.Warnings{"warning-1", "warning-2"}, nil) 102 }) 103 104 It("displays that the droplet was assigned", func() { 105 Expect(executeErr).ToNot(HaveOccurred()) 106 107 Expect(testUI.Out).To(Say("Setting app some-app to droplet some-droplet-guid in org some-org / space some-space as steve...")) 108 109 Expect(testUI.Err).To(Say("warning-1")) 110 Expect(testUI.Err).To(Say("warning-2")) 111 Expect(testUI.Out).To(Say("OK")) 112 113 Expect(fakeActor.SetApplicationDropletByApplicationNameAndSpaceCallCount()).To(Equal(1)) 114 appName, spaceGUID, dropletGUID := fakeActor.SetApplicationDropletByApplicationNameAndSpaceArgsForCall(0) 115 Expect(appName).To(Equal("some-app")) 116 Expect(spaceGUID).To(Equal("some-space-guid")) 117 Expect(dropletGUID).To(Equal("some-droplet-guid")) 118 }) 119 }) 120 121 When("the actor returns an error", func() { 122 var expectedErr error 123 BeforeEach(func() { 124 fakeConfig.TargetedOrganizationReturns(configv3.Organization{ 125 Name: "some-org", 126 }) 127 fakeConfig.TargetedSpaceReturns(configv3.Space{ 128 Name: "some-space", 129 }) 130 fakeConfig.CurrentUserReturns(configv3.User{Name: "steve"}, nil) 131 expectedErr = actionerror.ApplicationNotFoundError{Name: app} 132 fakeActor.SetApplicationDropletByApplicationNameAndSpaceReturns(v7action.Warnings{"warning-1", "warning-2"}, expectedErr) 133 }) 134 135 It("displays that the droplet was assigned", func() { 136 Expect(executeErr).To(Equal(actionerror.ApplicationNotFoundError{Name: app})) 137 138 Expect(testUI.Out).To(Say("Setting app some-app to droplet some-droplet-guid in org some-org / space some-space as steve...")) 139 140 Expect(testUI.Err).To(Say("warning-1")) 141 Expect(testUI.Err).To(Say("warning-2")) 142 }) 143 }) 144 })