github.com/loafoe/cli@v7.1.0+incompatible/command/v7/isolation_segments_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 . "github.com/onsi/ginkgo" 14 . "github.com/onsi/gomega" 15 . "github.com/onsi/gomega/gbytes" 16 ) 17 18 var _ = Describe("isolation-segments Command", func() { 19 var ( 20 cmd IsolationSegmentsCommand 21 testUI *ui.UI 22 fakeConfig *commandfakes.FakeConfig 23 fakeSharedActor *commandfakes.FakeSharedActor 24 fakeActor *v7fakes.FakeActor 25 binaryName string 26 executeErr error 27 ) 28 29 BeforeEach(func() { 30 testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer()) 31 fakeConfig = new(commandfakes.FakeConfig) 32 fakeSharedActor = new(commandfakes.FakeSharedActor) 33 fakeActor = new(v7fakes.FakeActor) 34 35 cmd = IsolationSegmentsCommand{ 36 BaseCommand: BaseCommand{ 37 UI: testUI, 38 Config: fakeConfig, 39 SharedActor: fakeSharedActor, 40 Actor: fakeActor, 41 }, 42 } 43 44 binaryName = "faceman" 45 fakeConfig.BinaryNameReturns(binaryName) 46 }) 47 48 JustBeforeEach(func() { 49 executeErr = cmd.Execute(nil) 50 }) 51 52 When("checking target fails", func() { 53 BeforeEach(func() { 54 fakeSharedActor.CheckTargetReturns(actionerror.NotLoggedInError{BinaryName: binaryName}) 55 }) 56 57 It("returns an error", func() { 58 Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: binaryName})) 59 60 Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1)) 61 checkTargetedOrg, checkTargetedSpace := fakeSharedActor.CheckTargetArgsForCall(0) 62 Expect(checkTargetedOrg).To(BeFalse()) 63 Expect(checkTargetedSpace).To(BeFalse()) 64 }) 65 }) 66 67 When("checking target does not fail", func() { 68 BeforeEach(func() { 69 fakeConfig.CurrentUserReturns(configv3.User{Name: "banana"}, nil) 70 }) 71 72 When("an error is not encountered getting the isolation segment summaries", func() { 73 When("there are isolation segments", func() { 74 BeforeEach(func() { 75 fakeActor.GetIsolationSegmentSummariesReturns( 76 []v7action.IsolationSegmentSummary{ 77 { 78 Name: "some-iso-1", 79 EntitledOrgs: []string{}, 80 }, 81 { 82 Name: "some-iso-2", 83 EntitledOrgs: []string{"some-org-1"}, 84 }, 85 { 86 Name: "some-iso-3", 87 EntitledOrgs: []string{"some-org-1", "some-org-2"}, 88 }, 89 }, 90 v7action.Warnings{"warning-1", "warning-2"}, 91 nil, 92 ) 93 }) 94 95 It("displays the isolation segment summaries and all warnings", func() { 96 Expect(executeErr).ToNot(HaveOccurred()) 97 98 Expect(testUI.Out).To(Say("Getting isolation segments as banana...")) 99 Expect(testUI.Out).NotTo(Say("OK\n\n")) 100 Expect(testUI.Out).To(Say(`name\s+orgs`)) 101 Expect(testUI.Out).To(Say("some-iso-1")) 102 Expect(testUI.Out).To(Say(`some-iso-2\s+some-org-1`)) 103 Expect(testUI.Out).To(Say(`some-iso-3\s+some-org-1, some-org-2`)) 104 105 Expect(testUI.Err).To(Say("warning-1")) 106 Expect(testUI.Err).To(Say("warning-2")) 107 108 Expect(fakeActor.GetIsolationSegmentSummariesCallCount()).To(Equal(1)) 109 }) 110 }) 111 112 When("there are no isolation segments", func() { 113 BeforeEach(func() { 114 fakeActor.GetIsolationSegmentSummariesReturns( 115 []v7action.IsolationSegmentSummary{}, 116 nil, 117 nil, 118 ) 119 }) 120 It("displays the empty table", func() { 121 Expect(executeErr).ToNot(HaveOccurred()) 122 Expect(testUI.Out).To(Say("Getting isolation segments as banana...")) 123 Expect(testUI.Out).NotTo(Say("OK\n\n")) 124 Expect(testUI.Out).To(Say(`name\s+orgs`)) 125 Expect(testUI.Out).NotTo(Say("[a-zA-Z]+")) 126 127 Expect(fakeActor.GetIsolationSegmentSummariesCallCount()).To(Equal(1)) 128 }) 129 }) 130 }) 131 132 When("an error is encountered getting the isolation segment summaries", func() { 133 var expectedError error 134 BeforeEach(func() { 135 expectedError = errors.New("some-error") 136 fakeActor.GetIsolationSegmentSummariesReturns( 137 []v7action.IsolationSegmentSummary{}, 138 v7action.Warnings{"warning-1", "warning-2"}, 139 expectedError, 140 ) 141 }) 142 143 It("displays warnings and returns the error", func() { 144 Expect(executeErr).To(MatchError(expectedError)) 145 146 Expect(testUI.Out).To(Say("Getting isolation segments as banana...")) 147 Expect(testUI.Out).NotTo(Say("OK")) 148 149 Expect(testUI.Err).To(Say("warning-1")) 150 Expect(testUI.Err).To(Say("warning-2")) 151 }) 152 }) 153 }) 154 })