github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/actor/v7pushaction/create_deployment_for_push_plan_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("CreateDeploymentForApplication()", func() { 14 var ( 15 actor *Actor 16 fakeV7Actor *v7pushactionfakes.FakeV7Actor 17 18 returnedPushPlan PushPlan 19 paramPlan PushPlan 20 fakeProgressBar *v7pushactionfakes.FakeProgressBar 21 22 warnings Warnings 23 executeErr error 24 25 events []Event 26 ) 27 28 BeforeEach(func() { 29 actor, fakeV7Actor, _ = getTestPushActor() 30 31 fakeProgressBar = new(v7pushactionfakes.FakeProgressBar) 32 33 paramPlan = PushPlan{ 34 Application: v7action.Application{ 35 GUID: "some-app-guid", 36 }, 37 } 38 }) 39 40 JustBeforeEach(func() { 41 events = EventFollower(func(eventStream chan<- *PushEvent) { 42 returnedPushPlan, warnings, executeErr = actor.CreateDeploymentForApplication(paramPlan, eventStream, fakeProgressBar) 43 }) 44 }) 45 46 Describe("creating deployment", func() { 47 When("creating the deployment is successful", func() { 48 BeforeEach(func() { 49 fakeV7Actor.CreateDeploymentReturns( 50 "some-deployment-guid", 51 v7action.Warnings{"some-deployment-warning"}, 52 nil, 53 ) 54 }) 55 56 It("waits for the app to start", func() { 57 Expect(fakeV7Actor.PollStartForRollingCallCount()).To(Equal(1)) 58 givenAppGUID, givenDeploymentGUID, noWait := fakeV7Actor.PollStartForRollingArgsForCall(0) 59 Expect(givenAppGUID).To(Equal("some-app-guid")) 60 Expect(givenDeploymentGUID).To(Equal("some-deployment-guid")) 61 Expect(noWait).To(Equal(false)) 62 }) 63 64 It("returns errors and warnings", func() { 65 Expect(returnedPushPlan).To(Equal(paramPlan)) 66 Expect(executeErr).NotTo(HaveOccurred()) 67 Expect(warnings).To(ConsistOf("some-deployment-warning")) 68 }) 69 70 It("records deployment events", func() { 71 Expect(events).To(ConsistOf(StartingDeployment, WaitingForDeployment)) 72 }) 73 }) 74 75 When("creating the package errors", func() { 76 var someErr error 77 78 BeforeEach(func() { 79 someErr = errors.New("failed to create deployment") 80 81 fakeV7Actor.CreateDeploymentReturns( 82 "", 83 v7action.Warnings{"some-deployment-warning"}, 84 someErr, 85 ) 86 }) 87 88 It("does not wait for the app to start", func() { 89 Expect(fakeV7Actor.PollStartForRollingCallCount()).To(Equal(0)) 90 }) 91 92 It("returns errors and warnings", func() { 93 Expect(returnedPushPlan).To(Equal(paramPlan)) 94 Expect(executeErr).To(MatchError(someErr)) 95 Expect(warnings).To(ConsistOf("some-deployment-warning")) 96 }) 97 98 It("records deployment events", func() { 99 Expect(events).To(ConsistOf(StartingDeployment)) 100 }) 101 }) 102 }) 103 104 Describe("waiting for app to start", func() { 105 When("the the polling is successful", func() { 106 BeforeEach(func() { 107 fakeV7Actor.PollStartForRollingReturns(v7action.Warnings{"some-poll-start-warning"}, nil) 108 }) 109 110 It("returns warnings and unchanged push plan", func() { 111 Expect(returnedPushPlan).To(Equal(paramPlan)) 112 Expect(warnings).To(ConsistOf("some-poll-start-warning")) 113 }) 114 115 It("records deployment events", func() { 116 Expect(events).To(ConsistOf(StartingDeployment, WaitingForDeployment)) 117 }) 118 }) 119 120 When("the the polling returns an error", func() { 121 var someErr error 122 123 BeforeEach(func() { 124 someErr = errors.New("app failed to start") 125 fakeV7Actor.PollStartForRollingReturns(v7action.Warnings{"some-poll-start-warning"}, someErr) 126 }) 127 128 It("returns errors and warnings", func() { 129 Expect(warnings).To(ConsistOf("some-poll-start-warning")) 130 Expect(executeErr).To(MatchError(someErr)) 131 }) 132 133 It("records deployment events", func() { 134 Expect(events).To(ConsistOf(StartingDeployment, WaitingForDeployment)) 135 }) 136 }) 137 138 When("the noWait flag is set", func() { 139 BeforeEach(func() { 140 paramPlan.NoWait = true 141 }) 142 143 It("passes in the noWait flag", func() { 144 _, _, noWait := fakeV7Actor.PollStartForRollingArgsForCall(0) 145 Expect(noWait).To(Equal(true)) 146 }) 147 }) 148 }) 149 })