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