github.com/jghiloni/cli@v6.28.1-0.20170628223758-0ce05fe032a2+incompatible/actor/pushaction/application_test.go (about) 1 package pushaction_test 2 3 import ( 4 "errors" 5 6 . "code.cloudfoundry.org/cli/actor/pushaction" 7 "code.cloudfoundry.org/cli/actor/pushaction/pushactionfakes" 8 "code.cloudfoundry.org/cli/actor/v2action" 9 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("Applications", func() { 15 var ( 16 actor *Actor 17 fakeV2Actor *pushactionfakes.FakeV2Actor 18 ) 19 20 BeforeEach(func() { 21 fakeV2Actor = new(pushactionfakes.FakeV2Actor) 22 actor = NewActor(fakeV2Actor) 23 }) 24 25 Describe("CreateOrUpdateApp", func() { 26 var ( 27 config ApplicationConfig 28 29 returnedConfig ApplicationConfig 30 event Event 31 warnings Warnings 32 executeErr error 33 ) 34 35 BeforeEach(func() { 36 config = ApplicationConfig{ 37 DesiredApplication: v2action.Application{ 38 Name: "some-app-name", 39 SpaceGUID: "some-space-guid", 40 }, 41 Path: "some-path", 42 } 43 }) 44 45 JustBeforeEach(func() { 46 returnedConfig, event, warnings, executeErr = actor.CreateOrUpdateApp(config) 47 }) 48 49 Context("when the app exists", func() { 50 BeforeEach(func() { 51 config.CurrentApplication = v2action.Application{ 52 Name: "some-app-name", 53 GUID: "some-app-guid", 54 SpaceGUID: "some-space-guid", 55 Buildpack: "java", 56 } 57 config.DesiredApplication = v2action.Application{ 58 Name: "some-app-name", 59 GUID: "some-app-guid", 60 SpaceGUID: "some-space-guid", 61 Buildpack: "ruby", 62 } 63 }) 64 65 Context("when the update is successful", func() { 66 BeforeEach(func() { 67 fakeV2Actor.UpdateApplicationReturns(v2action.Application{ 68 Name: "some-app-name", 69 GUID: "some-app-guid", 70 SpaceGUID: "some-space-guid", 71 Buildpack: "ruby", 72 }, v2action.Warnings{"update-warning"}, nil) 73 }) 74 75 It("updates the application", func() { 76 Expect(executeErr).ToNot(HaveOccurred()) 77 Expect(warnings).To(ConsistOf("update-warning")) 78 Expect(event).To(Equal(UpdatedApplication)) 79 80 Expect(returnedConfig.DesiredApplication).To(Equal(v2action.Application{ 81 Name: "some-app-name", 82 GUID: "some-app-guid", 83 SpaceGUID: "some-space-guid", 84 Buildpack: "ruby", 85 })) 86 Expect(returnedConfig.CurrentApplication).To(Equal(returnedConfig.DesiredApplication)) 87 88 Expect(fakeV2Actor.UpdateApplicationCallCount()).To(Equal(1)) 89 Expect(fakeV2Actor.UpdateApplicationArgsForCall(0)).To(Equal(v2action.Application{ 90 Name: "some-app-name", 91 GUID: "some-app-guid", 92 SpaceGUID: "some-space-guid", 93 Buildpack: "ruby", 94 })) 95 96 }) 97 }) 98 99 Context("when the update errors", func() { 100 var expectedErr error 101 BeforeEach(func() { 102 expectedErr = errors.New("oh my") 103 fakeV2Actor.UpdateApplicationReturns(v2action.Application{}, v2action.Warnings{"update-warning"}, expectedErr) 104 }) 105 106 It("returns warnings and error and stops", func() { 107 Expect(executeErr).To(MatchError(expectedErr)) 108 Expect(warnings).To(ConsistOf("update-warning")) 109 }) 110 }) 111 }) 112 113 Context("when the app does not exist", func() { 114 Context("when the creation is successful", func() { 115 BeforeEach(func() { 116 fakeV2Actor.CreateApplicationReturns(v2action.Application{ 117 Name: "some-app-name", 118 GUID: "some-app-guid", 119 SpaceGUID: "some-space-guid", 120 Buildpack: "ruby", 121 }, v2action.Warnings{"create-warning"}, nil) 122 }) 123 124 It("creates the application", func() { 125 Expect(executeErr).ToNot(HaveOccurred()) 126 Expect(warnings).To(ConsistOf("create-warning")) 127 Expect(event).To(Equal(CreatedApplication)) 128 129 Expect(returnedConfig.DesiredApplication).To(Equal(v2action.Application{ 130 Name: "some-app-name", 131 GUID: "some-app-guid", 132 SpaceGUID: "some-space-guid", 133 Buildpack: "ruby", 134 })) 135 Expect(returnedConfig.CurrentApplication).To(Equal(returnedConfig.DesiredApplication)) 136 137 Expect(fakeV2Actor.CreateApplicationCallCount()).To(Equal(1)) 138 Expect(fakeV2Actor.CreateApplicationArgsForCall(0)).To(Equal(v2action.Application{ 139 Name: "some-app-name", 140 SpaceGUID: "some-space-guid", 141 })) 142 }) 143 }) 144 145 Context("when the creation errors", func() { 146 var expectedErr error 147 148 BeforeEach(func() { 149 expectedErr = errors.New("oh my") 150 fakeV2Actor.CreateApplicationReturns(v2action.Application{}, v2action.Warnings{"create-warning"}, expectedErr) 151 }) 152 153 It("sends the warnings and errors and returns true", func() { 154 Expect(executeErr).To(MatchError(expectedErr)) 155 Expect(warnings).To(ConsistOf("create-warning")) 156 }) 157 }) 158 }) 159 }) 160 })