github.com/cloudfoundry/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 })