github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/command/v7/router_groups_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("router-groups Command", func() { 20 var ( 21 cmd RouterGroupsCommand 22 testUI *ui.UI 23 fakeConfig *commandfakes.FakeConfig 24 fakeSharedActor *commandfakes.FakeSharedActor 25 fakeActor *v7fakes.FakeActor 26 executeErr error 27 args []string 28 binaryName string 29 ) 30 31 const tableHeaders = `name\s+type` 32 33 BeforeEach(func() { 34 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 35 fakeConfig = new(commandfakes.FakeConfig) 36 fakeSharedActor = new(commandfakes.FakeSharedActor) 37 fakeActor = new(v7fakes.FakeActor) 38 args = nil 39 40 binaryName = "faceman" 41 fakeConfig.BinaryNameReturns(binaryName) 42 43 cmd = RouterGroupsCommand{ 44 BaseCommand: BaseCommand{ 45 UI: testUI, 46 Config: fakeConfig, 47 SharedActor: fakeSharedActor, 48 Actor: fakeActor, 49 }, 50 } 51 }) 52 53 JustBeforeEach(func() { 54 executeErr = cmd.Execute(args) 55 }) 56 57 When("checking target fails", func() { 58 BeforeEach(func() { 59 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 60 }) 61 62 It("returns an error", func() { 63 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 64 65 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 66 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 67 Expect(checkTargetedOrg).To(BeFalse()) 68 Expect(checkTargetedSpace).To(BeFalse()) 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("getting router groups succeeds", func() { 78 var ( 79 routerGroups []v7action.RouterGroup 80 ) 81 82 BeforeEach(func() { 83 routerGroups = []v7action.RouterGroup{ 84 {Name: "rg1", Type: "type1"}, 85 {Name: "rg2", Type: "type2"}, 86 {Name: "rg3", Type: "type3"}, 87 } 88 89 fakeActor.GetRouterGroupsReturns( 90 routerGroups, 91 nil, 92 ) 93 }) 94 95 It("prints flavor text", func() { 96 Expect(testUI.Out).To(Say("Getting router groups as banana...")) 97 }) 98 99 It("prints routes in a table", func() { 100 Expect(executeErr).NotTo(HaveOccurred()) 101 102 Expect(testUI.Out).To(Say(tableHeaders)) 103 Expect(testUI.Out).To(Say(`rg1\s+type1\s+`)) 104 Expect(testUI.Out).To(Say(`rg2\s+type2\s+`)) 105 Expect(testUI.Out).To(Say(`rg3\s+type3\s+`)) 106 }) 107 }) 108 109 When("getting router groups succeeds, but there are no groups", func() { 110 BeforeEach(func() { 111 fakeActor.GetRouterGroupsReturns( 112 []v7action.RouterGroup{}, 113 nil, 114 ) 115 }) 116 117 It("prints flavor text", func() { 118 Expect(testUI.Out).To(Say("Getting router groups as banana...")) 119 }) 120 121 It("displays an empty message", func() { 122 Expect(testUI.Out).To(Say("No router groups found.")) 123 }) 124 }) 125 126 When("getting router groups fails", func() { 127 var expectedErr error 128 129 BeforeEach(func() { 130 expectedErr = errors.New("some-error") 131 fakeActor.GetRouterGroupsReturns(nil, expectedErr) 132 }) 133 134 It("prints flavor text", func() { 135 Expect(testUI.Out).To(Say("Getting router groups as banana...")) 136 }) 137 138 It("prints warnings and returns error", func() { 139 Expect(executeErr).To(MatchError(expectedErr)) 140 Expect(testUI.Out).ToNot(Say(tableHeaders)) 141 }) 142 }) 143 }) 144 })