github.com/franc20/ayesa_sap@v7.0.0-beta.28.0.20200124003224-302d4d52fa6c+incompatible/command/v7/stacks_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/v7" 10 "code.cloudfoundry.org/cli/command/v7/v7fakes" 11 "code.cloudfoundry.org/cli/util/configv3" 12 "code.cloudfoundry.org/cli/util/ui" 13 14 . "github.com/onsi/ginkgo" 15 . "github.com/onsi/gomega" 16 . "github.com/onsi/gomega/gbytes" 17 ) 18 19 var _ = Describe("stacks Command", func() { 20 var ( 21 cmd StacksCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v7fakes.FakeStacksActor 26 executeErr error 27 args []string 28 binaryName string 29 ) 30 31 const tableHeaders = `name\s+description` 32 33 JustBeforeEach(func() { 34 executeErr = cmd.Execute(args) 35 }) 36 37 BeforeEach(func() { 38 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 39 fakeConfig = new(commandfakes.FakeConfig) 40 fakeSharedActor = new(commandfakes.FakeSharedActor) 41 fakeActor = new(v7fakes.FakeStacksActor) 42 args = nil 43 44 cmd = StacksCommand{ 45 UI: testUI, 46 Config: fakeConfig, 47 SharedActor: fakeSharedActor, 48 Actor: fakeActor, 49 } 50 51 binaryName = "faceman" 52 fakeConfig.BinaryNameReturns(binaryName) 53 }) 54 55 Context("When the environment is not setup correctly", func() { 56 When("checking target fails", func() { 57 BeforeEach(func() { 58 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 59 }) 60 61 It("returns an error", func() { 62 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 63 64 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 65 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 66 Expect(checkTargetedOrg).To(BeFalse()) 67 Expect(checkTargetedSpace).To(BeFalse()) 68 }) 69 }) 70 }) 71 72 Context("When the environment is setup correctly", func() { 73 BeforeEach(func() { 74 fakeConfig.CurrentUserReturns(configv3.User{Name: "banana"}, nil) 75 }) 76 77 When("StacksActor returns an error", func() { 78 var expectedErr error 79 80 BeforeEach(func() { 81 warnings := v7action.Warnings{"warning-1", "warning-2"} 82 expectedErr = errors.New("some-error") 83 fakeActor.GetStacksReturns(nil, warnings, expectedErr) 84 }) 85 86 It("prints that error with warnings", func() { 87 Expect(executeErr).To(Equal(expectedErr)) 88 89 Expect(testUI.Err).To(Say("warning-1")) 90 Expect(testUI.Err).To(Say("warning-2")) 91 Expect(testUI.Out).ToNot(Say(tableHeaders)) 92 }) 93 }) 94 95 When("StacksActor does not return an error", func() { 96 BeforeEach(func() { 97 stacks := []v7action.Stack{ 98 {Name: "Stack2", Description: "desc2"}, 99 {Name: "stack1", Description: "desc1"}, 100 } 101 fakeActor.GetStacksReturns(stacks, v7action.Warnings{"warning-1", "warning-2"}, nil) 102 }) 103 104 When("the --labels flag is given", func() { 105 labelsFlagValue := "some-label-selector" 106 BeforeEach(func() { 107 cmd.Labels = labelsFlagValue 108 }) 109 It("passes the label selector to GetStacks", func() { 110 labelSelector := fakeActor.GetStacksArgsForCall(0) 111 Expect(labelSelector).To(Equal(labelsFlagValue)) 112 }) 113 }) 114 115 It("prints warnings", func() { 116 Expect(testUI.Err).To(Say(`warning-1`)) 117 Expect(testUI.Err).To(Say(`warning-2`)) 118 }) 119 120 It("prints the list of stacks in alphabetical order", func() { 121 Expect(testUI.Out).To(Say(tableHeaders)) 122 Expect(testUI.Out).To(Say(`stack1\s+desc1`)) 123 Expect(testUI.Out).To(Say(`Stack2\s+desc2`)) 124 }) 125 126 It("prints the flavor text", func() { 127 Expect(testUI.Out).To(Say("Getting stacks as banana\\.\\.\\.")) 128 }) 129 }) 130 }) 131 })