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  })