github.com/nimakaviani/cli@v6.37.1-0.20180619223813-e734901a73fa+incompatible/actor/pushaction/push_state_test.go (about) 1 package pushaction_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/actionerror" 7 . "code.cloudfoundry.org/cli/actor/pushaction" 8 "code.cloudfoundry.org/cli/actor/pushaction/pushactionfakes" 9 "code.cloudfoundry.org/cli/actor/v3action" 10 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 . "github.com/onsi/gomega/gstruct" 14 ) 15 16 var _ = Describe("Push State", func() { 17 var ( 18 actor *Actor 19 fakeV2Actor *pushactionfakes.FakeV2Actor 20 fakeV3Actor *pushactionfakes.FakeV3Actor 21 fakeSharedActor *pushactionfakes.FakeSharedActor 22 ) 23 24 BeforeEach(func() { 25 fakeV2Actor = new(pushactionfakes.FakeV2Actor) 26 fakeV3Actor = new(pushactionfakes.FakeV3Actor) 27 fakeSharedActor = new(pushactionfakes.FakeSharedActor) 28 actor = NewActor(fakeV2Actor, fakeV3Actor, fakeSharedActor) 29 }) 30 31 Describe("Conceptualize", func() { 32 var ( 33 settings CommandLineSettings 34 spaceGUID string 35 36 states []PushState 37 warnings Warnings 38 executeErr error 39 ) 40 41 BeforeEach(func() { 42 settings = CommandLineSettings{ 43 Name: "some-app-name", 44 ProvidedAppPath: "some/app/path", 45 } 46 spaceGUID = "some-space-guid" 47 }) 48 49 JustBeforeEach(func() { 50 states, warnings, executeErr = actor.Conceptualize(settings, spaceGUID) 51 }) 52 53 Context("when the application exists", func() { 54 var app v3action.Application 55 56 BeforeEach(func() { 57 app = v3action.Application{ 58 GUID: "some-app-guid", 59 Name: "some-app-name", 60 } 61 62 fakeV3Actor.GetApplicationByNameAndSpaceReturns(app, v3action.Warnings{"some-app-warning"}, nil) 63 }) 64 65 It("uses the found app in the application state", func() { 66 Expect(executeErr).ToNot(HaveOccurred()) 67 Expect(warnings).To(ConsistOf("some-app-warning")) 68 Expect(states).To(HaveLen(1)) 69 70 Expect(states[0]).To(MatchFields(IgnoreExtras, 71 Fields{ 72 "Application": Equal(app), 73 "SpaceGUID": Equal(spaceGUID), 74 })) 75 76 Expect(fakeV3Actor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 77 passedName, passedSpaceGUID := fakeV3Actor.GetApplicationByNameAndSpaceArgsForCall(0) 78 Expect(passedName).To(Equal("some-app-name")) 79 Expect(passedSpaceGUID).To(Equal(spaceGUID)) 80 }) 81 }) 82 83 Context("when the application does not exist", func() { 84 BeforeEach(func() { 85 fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3action.Application{}, v3action.Warnings{"some-app-warning"}, actionerror.ApplicationNotFoundError{}) 86 }) 87 88 It("creates a new app in the application state", func() { 89 Expect(executeErr).ToNot(HaveOccurred()) 90 Expect(warnings).To(ConsistOf("some-app-warning")) 91 Expect(states).To(HaveLen(1)) 92 93 Expect(states[0]).To(MatchFields(IgnoreExtras, 94 Fields{ 95 "Application": Equal(v3action.Application{ 96 Name: "some-app-name", 97 }), 98 "SpaceGUID": Equal(spaceGUID), 99 })) 100 }) 101 }) 102 103 Context("when the application lookup errors", func() { 104 var expectedErr error 105 106 BeforeEach(func() { 107 expectedErr = errors.New("some-error") 108 fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3action.Application{}, v3action.Warnings{"some-app-warning"}, expectedErr) 109 }) 110 111 It("translates command line settings into a single push state", func() { 112 Expect(executeErr).To(MatchError(expectedErr)) 113 Expect(warnings).To(ConsistOf("some-app-warning")) 114 }) 115 }) 116 }) 117 })