github.com/dcarley/cf-cli@v6.24.1-0.20170220111324-4225ff346898+incompatible/actor/v3action/application_test.go (about) 1 package v3action_test 2 3 import ( 4 "errors" 5 "net/url" 6 7 . "code.cloudfoundry.org/cli/actor/v3action" 8 "code.cloudfoundry.org/cli/actor/v3action/v3actionfakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv3" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("Application Actions", func() { 16 var ( 17 actor Actor 18 fakeCloudControllerClient *v3actionfakes.FakeCloudControllerClient 19 ) 20 21 BeforeEach(func() { 22 fakeCloudControllerClient = new(v3actionfakes.FakeCloudControllerClient) 23 actor = NewActor(fakeCloudControllerClient) 24 }) 25 26 Describe("GetApplicationByNameAndSpace", func() { 27 Context("when the app exists", func() { 28 BeforeEach(func() { 29 fakeCloudControllerClient.GetApplicationsReturns( 30 []ccv3.Application{ 31 { 32 Name: "some-app-name", 33 GUID: "some-app-guid", 34 }, 35 }, 36 ccv3.Warnings{"some-warning"}, 37 nil, 38 ) 39 }) 40 41 It("returns the application and warnings", func() { 42 app, warnings, err := actor.GetApplicationByNameAndSpace("some-app-name", "some-space-guid") 43 Expect(err).ToNot(HaveOccurred()) 44 Expect(app).To(Equal(Application{ 45 Name: "some-app-name", 46 GUID: "some-app-guid", 47 })) 48 Expect(warnings).To(Equal(Warnings{"some-warning"})) 49 50 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 51 expectedQuery := url.Values{ 52 "names": []string{"some-app-name"}, 53 "space_guids": []string{"some-space-guid"}, 54 } 55 query := fakeCloudControllerClient.GetApplicationsArgsForCall(0) 56 Expect(query).To(Equal(expectedQuery)) 57 }) 58 }) 59 60 Context("when the cloud controller client returns an error", func() { 61 var expectedError error 62 63 BeforeEach(func() { 64 expectedError = errors.New("I am a CloudControllerClient Error") 65 fakeCloudControllerClient.GetApplicationsReturns( 66 []ccv3.Application{}, 67 ccv3.Warnings{"some-warning"}, 68 expectedError) 69 }) 70 71 It("returns the warnings and the error", func() { 72 _, warnings, err := actor.GetApplicationByNameAndSpace("some-app-name", "some-space-guid") 73 Expect(warnings).To(ConsistOf("some-warning")) 74 Expect(err).To(MatchError(expectedError)) 75 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 76 expectedQuery := url.Values{ 77 "names": []string{"some-app-name"}, 78 "space_guids": []string{"some-space-guid"}, 79 } 80 query := fakeCloudControllerClient.GetApplicationsArgsForCall(0) 81 Expect(query).To(Equal(expectedQuery)) 82 }) 83 }) 84 }) 85 86 Context("when the app does not exist", func() { 87 BeforeEach(func() { 88 fakeCloudControllerClient.GetApplicationsReturns( 89 []ccv3.Application{}, 90 ccv3.Warnings{"some-warning"}, 91 nil, 92 ) 93 }) 94 95 It("returns an ApplicationNotFoundError and the warnings", func() { 96 _, warnings, err := actor.GetApplicationByNameAndSpace("some-app-name", "some-space-guid") 97 Expect(warnings).To(ConsistOf("some-warning")) 98 Expect(err).To(MatchError( 99 ApplicationNotFoundError{Name: "some-app-name"})) 100 Expect(fakeCloudControllerClient.GetApplicationsCallCount()).To(Equal(1)) 101 expectedQuery := url.Values{ 102 "names": []string{"some-app-name"}, 103 "space_guids": []string{"some-space-guid"}, 104 } 105 query := fakeCloudControllerClient.GetApplicationsArgsForCall(0) 106 Expect(query).To(Equal(expectedQuery)) 107 }) 108 }) 109 })