github.com/nimakaviani/cli@v6.37.1-0.20180619223813-e734901a73fa+incompatible/actor/pushaction/push_state_test.go (about)

     1  package pushaction_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/actionerror"
     7  	. "code.cloudfoundry.org/cli/actor/pushaction"
     8  	"code.cloudfoundry.org/cli/actor/pushaction/pushactionfakes"
     9  	"code.cloudfoundry.org/cli/actor/v3action"
    10  
    11  	. "github.com/onsi/ginkgo"
    12  	. "github.com/onsi/gomega"
    13  	. "github.com/onsi/gomega/gstruct"
    14  )
    15  
    16  var _ = Describe("Push State", func() {
    17  	var (
    18  		actor           *Actor
    19  		fakeV2Actor     *pushactionfakes.FakeV2Actor
    20  		fakeV3Actor     *pushactionfakes.FakeV3Actor
    21  		fakeSharedActor *pushactionfakes.FakeSharedActor
    22  	)
    23  
    24  	BeforeEach(func() {
    25  		fakeV2Actor = new(pushactionfakes.FakeV2Actor)
    26  		fakeV3Actor = new(pushactionfakes.FakeV3Actor)
    27  		fakeSharedActor = new(pushactionfakes.FakeSharedActor)
    28  		actor = NewActor(fakeV2Actor, fakeV3Actor, fakeSharedActor)
    29  	})
    30  
    31  	Describe("Conceptualize", func() {
    32  		var (
    33  			settings  CommandLineSettings
    34  			spaceGUID string
    35  
    36  			states     []PushState
    37  			warnings   Warnings
    38  			executeErr error
    39  		)
    40  
    41  		BeforeEach(func() {
    42  			settings = CommandLineSettings{
    43  				Name:            "some-app-name",
    44  				ProvidedAppPath: "some/app/path",
    45  			}
    46  			spaceGUID = "some-space-guid"
    47  		})
    48  
    49  		JustBeforeEach(func() {
    50  			states, warnings, executeErr = actor.Conceptualize(settings, spaceGUID)
    51  		})
    52  
    53  		Context("when the application exists", func() {
    54  			var app v3action.Application
    55  
    56  			BeforeEach(func() {
    57  				app = v3action.Application{
    58  					GUID: "some-app-guid",
    59  					Name: "some-app-name",
    60  				}
    61  
    62  				fakeV3Actor.GetApplicationByNameAndSpaceReturns(app, v3action.Warnings{"some-app-warning"}, nil)
    63  			})
    64  
    65  			It("uses the found app in the application state", func() {
    66  				Expect(executeErr).ToNot(HaveOccurred())
    67  				Expect(warnings).To(ConsistOf("some-app-warning"))
    68  				Expect(states).To(HaveLen(1))
    69  
    70  				Expect(states[0]).To(MatchFields(IgnoreExtras,
    71  					Fields{
    72  						"Application": Equal(app),
    73  						"SpaceGUID":   Equal(spaceGUID),
    74  					}))
    75  
    76  				Expect(fakeV3Actor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1))
    77  				passedName, passedSpaceGUID := fakeV3Actor.GetApplicationByNameAndSpaceArgsForCall(0)
    78  				Expect(passedName).To(Equal("some-app-name"))
    79  				Expect(passedSpaceGUID).To(Equal(spaceGUID))
    80  			})
    81  		})
    82  
    83  		Context("when the application does not exist", func() {
    84  			BeforeEach(func() {
    85  				fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3action.Application{}, v3action.Warnings{"some-app-warning"}, actionerror.ApplicationNotFoundError{})
    86  			})
    87  
    88  			It("creates a new app in the application state", func() {
    89  				Expect(executeErr).ToNot(HaveOccurred())
    90  				Expect(warnings).To(ConsistOf("some-app-warning"))
    91  				Expect(states).To(HaveLen(1))
    92  
    93  				Expect(states[0]).To(MatchFields(IgnoreExtras,
    94  					Fields{
    95  						"Application": Equal(v3action.Application{
    96  							Name: "some-app-name",
    97  						}),
    98  						"SpaceGUID": Equal(spaceGUID),
    99  					}))
   100  			})
   101  		})
   102  
   103  		Context("when the application lookup errors", func() {
   104  			var expectedErr error
   105  
   106  			BeforeEach(func() {
   107  				expectedErr = errors.New("some-error")
   108  				fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3action.Application{}, v3action.Warnings{"some-app-warning"}, expectedErr)
   109  			})
   110  
   111  			It("translates command line settings into a single push state", func() {
   112  				Expect(executeErr).To(MatchError(expectedErr))
   113  				Expect(warnings).To(ConsistOf("some-app-warning"))
   114  			})
   115  		})
   116  	})
   117  })