github.com/loafoe/cli@v7.1.0+incompatible/actor/v2v3action/manifest_test.go (about) 1 package v2v3action_test 2 3 import ( 4 "errors" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 . "github.com/onsi/gomega/gstruct" 9 10 "code.cloudfoundry.org/cli/actor/v2action" 11 . "code.cloudfoundry.org/cli/actor/v2v3action" 12 "code.cloudfoundry.org/cli/actor/v2v3action/v2v3actionfakes" 13 "code.cloudfoundry.org/cli/actor/v3action" 14 "code.cloudfoundry.org/cli/types" 15 "code.cloudfoundry.org/cli/util/manifest" 16 ) 17 18 var _ = Describe("Manifest", func() { 19 var ( 20 actor *Actor 21 fakeV2Actor *v2v3actionfakes.FakeV2Actor 22 fakeV3Actor *v2v3actionfakes.FakeV3Actor 23 24 appName string 25 appSpace string 26 27 manifestApp manifest.Application 28 warnings Warnings 29 executeErr error 30 ) 31 32 BeforeEach(func() { 33 fakeV2Actor = new(v2v3actionfakes.FakeV2Actor) 34 fakeV3Actor = new(v2v3actionfakes.FakeV3Actor) 35 36 actor = NewActor(fakeV2Actor, fakeV3Actor) 37 38 appName = "some-app-name" 39 appSpace = "some-space-GUID" 40 }) 41 42 JustBeforeEach(func() { 43 manifestApp, warnings, executeErr = actor.CreateApplicationManifestByNameAndSpace(appName, appSpace) 44 }) 45 46 It("calls v2Actor.CreateManifestApplication with the appName and appSpace", func() { 47 Expect(fakeV2Actor.CreateApplicationManifestByNameAndSpaceCallCount()).To(Equal(1)) 48 appNameArg, appSpaceArg := fakeV2Actor.CreateApplicationManifestByNameAndSpaceArgsForCall(0) 49 Expect(appNameArg).To(Equal(appName)) 50 Expect(appSpaceArg).To(Equal(appSpace)) 51 }) 52 53 When("v2Actor.CreateManifestApplication succeeds", func() { 54 BeforeEach(func() { 55 v2Application := manifest.Application{ 56 Buildpacks: []string{"some-buildpack"}, 57 } 58 59 fakeV2Actor.CreateApplicationManifestByNameAndSpaceReturns(v2Application, v2action.Warnings{"v2-action-warnings"}, nil) 60 }) 61 62 It("Calls the v3actor.GetApplicationByNameAndSpace with the appName and appSpace", func() { 63 Expect(fakeV3Actor.GetApplicationByNameAndSpaceCallCount()).To(Equal(1)) 64 appNameArg, appSpaceArg := fakeV3Actor.GetApplicationByNameAndSpaceArgsForCall(0) 65 Expect(appNameArg).To(Equal(appName)) 66 Expect(appSpaceArg).To(Equal(appSpace)) 67 }) 68 69 When("the v3Actor.GetApplicationByNameAndSpace succeeds", func() { 70 BeforeEach(func() { 71 v3Application := v3action.Application{LifecycleBuildpacks: []string{"some-buildpack"}} 72 fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3Application, v3action.Warnings{"v3-action-warnings"}, nil) 73 }) 74 75 It("should return an application with v3 specific attributes", func() { 76 Expect(executeErr).ToNot(HaveOccurred()) 77 Expect(warnings).To(ConsistOf("v2-action-warnings", "v3-action-warnings")) 78 Expect(manifestApp).To(MatchFields(IgnoreExtras, Fields{ 79 "Buildpack": Equal(types.FilteredString{}), 80 "Buildpacks": ConsistOf("some-buildpack"), 81 })) 82 }) 83 }) 84 85 When("the v3Actor.GetApplicationByNameAndSpace fails", func() { 86 BeforeEach(func() { 87 fakeV3Actor.GetApplicationByNameAndSpaceReturns(v3action.Application{}, v3action.Warnings{"v3-action-warnings"}, errors.New("i'm a v3 error")) 88 }) 89 90 It("it raises the error", func() { 91 Expect(executeErr).To(MatchError("i'm a v3 error")) 92 Expect(warnings).To(ConsistOf("v2-action-warnings", "v3-action-warnings")) 93 }) 94 }) 95 }) 96 97 When("v2Actor.CreateManifestApplication fails", func() { 98 BeforeEach(func() { 99 fakeV2Actor.CreateApplicationManifestByNameAndSpaceReturns(manifest.Application{}, v2action.Warnings{"v2-action-warnings"}, errors.New("spaghetti")) 100 }) 101 102 It("returns warnings and the error", func() { 103 Expect(executeErr).To(MatchError(errors.New("spaghetti"))) 104 Expect(warnings).To(ConsistOf("v2-action-warnings")) 105 }) 106 }) 107 })