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