github.com/sleungcy-sap/cli@v7.1.0+incompatible/actor/v7pushaction/stage_package_for_application_test.go (about)

     1  package v7pushaction_test
     2  
     3  import (
     4  	"errors"
     5  
     6  	"code.cloudfoundry.org/cli/actor/v7action"
     7  	. "code.cloudfoundry.org/cli/actor/v7pushaction"
     8  	"code.cloudfoundry.org/cli/actor/v7pushaction/v7pushactionfakes"
     9  	"code.cloudfoundry.org/cli/resources"
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("StagePackageForApplication", func() {
    15  	var (
    16  		actor       *Actor
    17  		fakeV7Actor *v7pushactionfakes.FakeV7Actor
    18  
    19  		paramPlan PushPlan
    20  
    21  		returnedPushPlan PushPlan
    22  		warnings         Warnings
    23  		executeErr       error
    24  
    25  		events []Event
    26  	)
    27  
    28  	BeforeEach(func() {
    29  		actor, fakeV7Actor, _ = getTestPushActor()
    30  
    31  		paramPlan = PushPlan{
    32  			Application: resources.Application{
    33  				GUID: "some-app-guid",
    34  			},
    35  			PackageGUID: "some-pkg-guid",
    36  		}
    37  	})
    38  
    39  	JustBeforeEach(func() {
    40  		events = EventFollower(func(eventStream chan<- *PushEvent) {
    41  			returnedPushPlan, warnings, executeErr = actor.StagePackageForApplication(paramPlan, eventStream, nil)
    42  		})
    43  	})
    44  
    45  	Describe("staging package", func() {
    46  		It("stages the application using the package guid", func() {
    47  			Expect(executeErr).ToNot(HaveOccurred())
    48  			Expect(fakeV7Actor.StageApplicationPackageCallCount()).To(Equal(1))
    49  			Expect(fakeV7Actor.StageApplicationPackageArgsForCall(0)).To(Equal("some-pkg-guid"))
    50  		})
    51  
    52  		When("staging is successful", func() {
    53  			BeforeEach(func() {
    54  				fakeV7Actor.StageApplicationPackageReturns(v7action.Build{GUID: "some-build-guid"}, v7action.Warnings{"some-staging-warning"}, nil)
    55  			})
    56  
    57  			It("returns a polling build event and warnings", func() {
    58  				Expect(events).To(ConsistOf(StartingStaging, PollingBuild, StagingComplete))
    59  				Expect(ConsistOf("some-staging-warning"))
    60  			})
    61  		})
    62  
    63  		When("staging errors", func() {
    64  			BeforeEach(func() {
    65  				fakeV7Actor.StageApplicationPackageReturns(v7action.Build{}, v7action.Warnings{"some-staging-warning"}, errors.New("ahhh, i failed"))
    66  			})
    67  
    68  			It("returns errors and warnings", func() {
    69  				Expect(events).To(ConsistOf(StartingStaging))
    70  				Expect(ConsistOf("some-staging-warning"))
    71  				Expect(executeErr).To(MatchError("ahhh, i failed"))
    72  			})
    73  		})
    74  	})
    75  
    76  	Describe("polling build", func() {
    77  		When("the the polling is successful", func() {
    78  			BeforeEach(func() {
    79  				fakeV7Actor.PollBuildReturns(resources.Droplet{GUID: "some-droplet-guid"}, v7action.Warnings{"some-poll-build-warning"}, nil)
    80  			})
    81  
    82  			It("returns a staging complete event and warnings", func() {
    83  				Expect(events).To(ConsistOf(StartingStaging, PollingBuild, StagingComplete))
    84  				Expect(warnings).To(ConsistOf("some-poll-build-warning"))
    85  
    86  				Expect(fakeV7Actor.PollBuildCallCount()).To(Equal(1))
    87  			})
    88  
    89  			It("sets the droplet GUID on push plan", func() {
    90  				Expect(returnedPushPlan.DropletGUID).To(Equal("some-droplet-guid"))
    91  			})
    92  		})
    93  
    94  		When("the the polling returns an error", func() {
    95  			var someErr error
    96  
    97  			BeforeEach(func() {
    98  				someErr = errors.New("I AM A BANANA")
    99  				fakeV7Actor.PollBuildReturns(resources.Droplet{}, v7action.Warnings{"some-poll-build-warning"}, someErr)
   100  			})
   101  
   102  			It("returns errors and warnings", func() {
   103  				Expect(events).To(ConsistOf(StartingStaging, PollingBuild))
   104  				Expect(warnings).To(ConsistOf("some-poll-build-warning"))
   105  				Expect(executeErr).To(MatchError(someErr))
   106  			})
   107  		})
   108  	})
   109  })