github.com/Thanhphan1147/cloudfoundry-cli@v7.1.0+incompatible/actor/v3action/application_with_process_summary_test.go (about) 1 package v3action_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/v3action" 7 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 8 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant" 10 "code.cloudfoundry.org/cli/resources" 11 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 var _ = Describe("Application with ProcessSummary Actions", func() { 17 var ( 18 actor *Actor 19 fakeCloudControllerClient *v3actionfakes.FakeCloudControllerClient 20 ) 21 22 BeforeEach(func() { 23 fakeCloudControllerClient = new(v3actionfakes.FakeCloudControllerClient) 24 actor = NewActor(fakeCloudControllerClient, nil, nil, nil) 25 }) 26 27 Describe("GetApplicationsWithProcessesBySpace", func() { 28 When("there are apps", func() { 29 BeforeEach(func() { 30 fakeCloudControllerClient.GetApplicationsReturns( 31 []resources.Application{ 32 { 33 Name: "some-app-name-1", 34 GUID: "some-app-guid-1", 35 State: constant.ApplicationStarted, 36 }, 37 { 38 Name: "some-app-name-2", 39 GUID: "some-app-guid-2", 40 State: constant.ApplicationStopped, 41 }, 42 }, 43 ccv3.Warnings{"some-warning"}, 44 nil, 45 ) 46 47 fakeCloudControllerClient.GetApplicationProcessesReturnsOnCall( 48 0, 49 []ccv3.Process{ 50 { 51 GUID: "some-process-guid-1", 52 Type: "some-process-type-1", 53 }, 54 { 55 GUID: "some-process-guid-2", 56 Type: "some-process-type-2", 57 }, 58 }, 59 ccv3.Warnings{"some-process-warning-1"}, 60 nil, 61 ) 62 fakeCloudControllerClient.GetApplicationProcessesReturnsOnCall( 63 1, 64 []ccv3.Process{ 65 { 66 GUID: "some-process-guid-3", 67 Type: "some-process-type-3", 68 }, 69 }, 70 ccv3.Warnings{"some-process-warning-2"}, 71 nil, 72 ) 73 74 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 75 0, 76 []ccv3.ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceDown}, {State: constant.ProcessInstanceRunning}}, 77 ccv3.Warnings{"some-process-stats-warning-1"}, 78 nil, 79 ) 80 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 81 1, 82 []ccv3.ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceRunning}}, 83 ccv3.Warnings{"some-process-stats-warning-2"}, 84 nil, 85 ) 86 fakeCloudControllerClient.GetProcessInstancesReturnsOnCall( 87 2, 88 []ccv3.ProcessInstance{{State: constant.ProcessInstanceDown}}, 89 ccv3.Warnings{"some-process-stats-warning-3"}, 90 nil, 91 ) 92 }) 93 94 It("returns app summaries and warnings", func() { 95 summaries, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 96 Expect(err).ToNot(HaveOccurred()) 97 Expect(summaries).To(ConsistOf( 98 ApplicationWithProcessSummary{ 99 Application: Application{ 100 Name: "some-app-name-1", 101 GUID: "some-app-guid-1", 102 State: constant.ApplicationStarted, 103 }, 104 ProcessSummaries: []ProcessSummary{ 105 { 106 Process: Process{GUID: "some-process-guid-1", Type: "some-process-type-1"}, 107 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceDown}, {State: constant.ProcessInstanceRunning}}, 108 }, 109 { 110 Process: Process{GUID: "some-process-guid-2", Type: "some-process-type-2"}, 111 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceRunning}, {State: constant.ProcessInstanceRunning}}, 112 }, 113 }, 114 }, 115 ApplicationWithProcessSummary{ 116 Application: Application{ 117 Name: "some-app-name-2", 118 GUID: "some-app-guid-2", 119 State: constant.ApplicationStopped, 120 }, 121 ProcessSummaries: []ProcessSummary{ 122 { 123 Process: Process{GUID: "some-process-guid-3", Type: "some-process-type-3"}, 124 InstanceDetails: []ProcessInstance{{State: constant.ProcessInstanceDown}}, 125 }, 126 }, 127 })) 128 Expect(warnings).To(ConsistOf("some-warning", "some-process-warning-1", "some-process-stats-warning-1", "some-process-stats-warning-2", "some-process-warning-2", "some-process-stats-warning-3")) 129 130 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 131 Expect(fakeCloudControllerClient.GetApplicationsArgsForCall(0)).To(ConsistOf( 132 ccv3.Query{Key: ccv3.SpaceGUIDFilter, Values: []string{"some-space-guid"}}, 133 ccv3.Query{Key: ccv3.OrderBy, Values: []string{ccv3.NameOrder}}, 134 )) 135 136 Expect(fakeCloudControllerClient.GetApplicationProcessesCallCount()).To(Equal(2)) 137 Expect(fakeCloudControllerClient.GetApplicationProcessesArgsForCall(0)).To(Equal("some-app-guid-1")) 138 Expect(fakeCloudControllerClient.GetApplicationProcessesArgsForCall(1)).To(Equal("some-app-guid-2")) 139 140 Expect(fakeCloudControllerClient.GetProcessInstancesCallCount()).To(Equal(3)) 141 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(0)).To(Equal("some-process-guid-1")) 142 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(1)).To(Equal("some-process-guid-2")) 143 Expect(fakeCloudControllerClient.GetProcessInstancesArgsForCall(2)).To(Equal("some-process-guid-3")) 144 }) 145 }) 146 147 When("getting the app processes returns an error", func() { 148 var expectedErr error 149 150 BeforeEach(func() { 151 fakeCloudControllerClient.GetApplicationsReturns( 152 []resources.Application{ 153 { 154 Name: "some-app-name", 155 GUID: "some-app-guid", 156 State: constant.ApplicationStarted, 157 }, 158 }, 159 ccv3.Warnings{"some-warning"}, 160 nil, 161 ) 162 163 expectedErr = errors.New("some error") 164 fakeCloudControllerClient.GetApplicationProcessesReturns( 165 []ccv3.Process{}, 166 ccv3.Warnings{"some-process-warning"}, 167 expectedErr, 168 ) 169 }) 170 171 It("returns the error", func() { 172 _, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 173 Expect(err).To(Equal(expectedErr)) 174 Expect(warnings).To(ConsistOf("some-warning", "some-process-warning")) 175 }) 176 }) 177 178 When("getting the app process instances returns an error", func() { 179 var expectedErr error 180 181 BeforeEach(func() { 182 fakeCloudControllerClient.GetApplicationsReturns( 183 []resources.Application{ 184 { 185 Name: "some-app-name", 186 GUID: "some-app-guid", 187 State: constant.ApplicationStarted, 188 }, 189 }, 190 ccv3.Warnings{"some-warning"}, 191 nil, 192 ) 193 194 fakeCloudControllerClient.GetApplicationProcessesReturns( 195 []ccv3.Process{ 196 { 197 GUID: "some-process-guid", 198 Type: "some-type", 199 }, 200 }, 201 ccv3.Warnings{"some-process-warning"}, 202 nil, 203 ) 204 205 expectedErr = errors.New("some error") 206 fakeCloudControllerClient.GetProcessInstancesReturns( 207 []ccv3.ProcessInstance{}, 208 ccv3.Warnings{"some-process-stats-warning"}, 209 expectedErr, 210 ) 211 }) 212 213 It("returns the error", func() { 214 _, warnings, err := actor.GetApplicationsWithProcessesBySpace("some-space-guid") 215 Expect(err).To(Equal(expectedErr)) 216 Expect(warnings).To(ConsistOf("some-warning", "some-process-warning", "some-process-stats-warning")) 217 }) 218 }) 219 }) 220 })