github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/rename_command_test.go (about) 1 package v7_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/command/commandfakes" 8 . "code.cloudfoundry.org/cli/command/v7" 9 "code.cloudfoundry.org/cli/command/v7/v7fakes" 10 "code.cloudfoundry.org/cli/util/configv3" 11 "code.cloudfoundry.org/cli/util/ui" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 . "github.com/onsi/gomega/gbytes" 15 ) 16 17 var _ = Describe("rename Command", func() { 18 var ( 19 input *Buffer 20 testUI *ui.UI 21 fakeConfig *commandfakes.FakeConfig 22 fakeSharedActor *commandfakes.FakeSharedActor 23 fakeActor *v7fakes.FakeRenameActor 24 cmd RenameCommand 25 executeErr error 26 ) 27 28 BeforeEach(func() { 29 input = NewBuffer() 30 testUI = ui.NewTestUI(input, NewBuffer(), NewBuffer()) 31 fakeConfig = new(commandfakes.FakeConfig) 32 fakeSharedActor = new(commandfakes.FakeSharedActor) 33 fakeActor = new(v7fakes.FakeRenameActor) 34 35 cmd = RenameCommand{ 36 UI: testUI, 37 Config: fakeConfig, 38 SharedActor: fakeSharedActor, 39 Actor: fakeActor, 40 } 41 42 cmd.RequiredArgs.OldAppName = "old-app-name" 43 cmd.RequiredArgs.NewAppName = "new-app-name" 44 45 fakeConfig.CurrentUserReturns(configv3.User{Name: "username"}, nil) 46 fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "targeted-org"}) 47 fakeConfig.TargetedSpaceReturns(configv3.Space{Name: "targeted-space"}) 48 fakeActor.RenameApplicationByNameAndSpaceGUIDReturns(v7action.Application{Name: "new-app-name"}, v7action.Warnings{"rename-app-warning"}, nil) 49 }) 50 51 JustBeforeEach(func() { 52 executeErr = cmd.Execute(nil) 53 }) 54 55 When("checking target succeeds", func() { 56 57 It("renames the app", func() { 58 Expect(testUI.Out).To(Say("Renaming app old-app-name to new-app-name in org targeted-org / space targeted-space as username...")) 59 Expect(testUI.Err).To(Say("rename-app-warning")) 60 Expect(testUI.Out).To(Say("OK")) 61 }) 62 }) 63 64 When("app and space are not targeted", func() { 65 var ( 66 returnedError error 67 ) 68 BeforeEach(func() { 69 returnedError = errors.New("no org found") 70 fakeSharedActor.CheckTargetReturns(returnedError) 71 }) 72 It("fails", func() { 73 targetOrg, targetSpace := fakeSharedActor.CheckTargetArgsForCall(0) 74 Expect(targetOrg).To(BeTrue()) 75 Expect(targetSpace).To(BeTrue()) 76 Expect(executeErr).To(MatchError(returnedError)) 77 }) 78 }) 79 80 When("there is no CurrentUser", func() { 81 var ( 82 returnedError error 83 ) 84 BeforeEach(func() { 85 returnedError = errors.New("current user not found") 86 fakeConfig.CurrentUserReturns(configv3.User{}, returnedError) 87 }) 88 It("returns the CurrentUser error", func() { 89 Expect(executeErr).To(MatchError(returnedError)) 90 }) 91 }) 92 93 When("the actor returns an error", func() { 94 var ( 95 returnedError error 96 ) 97 BeforeEach(func() { 98 returnedError = errors.New("app rename failed!") 99 fakeActor.RenameApplicationByNameAndSpaceGUIDReturns(v7action.Application{Name: "new-app-name"}, v7action.Warnings{"rename-app-warning"}, returnedError) 100 }) 101 102 It("returns the error", func() { 103 Expect(testUI.Out).To(Say("Renaming app old-app-name to new-app-name in org targeted-org / space targeted-space as username...")) 104 Expect(testUI.Err).To(Say("rename-app-warning")) 105 Expect(executeErr).To(MatchError(returnedError)) 106 }) 107 }) 108 })