github.com/arunkumar7540/cli@v6.45.0+incompatible/actor/v2action/composite/update_service_instance_test.go (about) 1 package composite_test 2 3 import ( 4 "errors" 5 6 "code.cloudfoundry.org/cli/actor/v2action" 7 . "code.cloudfoundry.org/cli/actor/v2action/composite" 8 "code.cloudfoundry.org/cli/actor/v2action/composite/compositefakes" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccv2" 10 . "github.com/onsi/ginkgo" 11 . "github.com/onsi/gomega" 12 ) 13 14 var _ = Describe("UpdateServiceInstanceCompositeActor", func() { 15 var ( 16 composite *UpdateServiceInstanceCompositeActor 17 fakeGetServiceInstanceActor *compositefakes.FakeGetServiceInstanceActor 18 fakeGetServicePlanActor *compositefakes.FakeGetServicePlanActor 19 fakeUpdateServiceInstanceMaintenanceInfoActor *compositefakes.FakeUpdateServiceInstanceMaintenanceInfoActor 20 err error 21 warnings v2action.Warnings 22 ) 23 24 BeforeEach(func() { 25 fakeGetServiceInstanceActor = new(compositefakes.FakeGetServiceInstanceActor) 26 fakeGetServicePlanActor = new(compositefakes.FakeGetServicePlanActor) 27 fakeUpdateServiceInstanceMaintenanceInfoActor = new(compositefakes.FakeUpdateServiceInstanceMaintenanceInfoActor) 28 composite = &UpdateServiceInstanceCompositeActor{ 29 GetServiceInstanceActor: fakeGetServiceInstanceActor, 30 GetServicePlanActor: fakeGetServicePlanActor, 31 UpdateServiceInstanceMaintenanceInfoActor: fakeUpdateServiceInstanceMaintenanceInfoActor, 32 } 33 }) 34 35 Describe("UpgradeServiceInstance", func() { 36 const ( 37 serviceInstanceGUID = "service-instance-guid" 38 servicePlanGUID = "service-plan-guid" 39 ) 40 41 JustBeforeEach(func() { 42 warnings, err = composite.UpgradeServiceInstance(serviceInstanceGUID, servicePlanGUID) 43 }) 44 45 When("the plan exists", func() { 46 var maintenanceInfo v2action.MaintenanceInfo 47 48 BeforeEach(func() { 49 maintenanceInfo = v2action.MaintenanceInfo{ 50 Version: "1.2.3-abc", 51 } 52 servicePlan := v2action.ServicePlan{ 53 MaintenanceInfo: ccv2.MaintenanceInfo(maintenanceInfo), 54 } 55 fakeGetServicePlanActor.GetServicePlanReturns(servicePlan, v2action.Warnings{"plan-lookup-warning"}, nil) 56 fakeUpdateServiceInstanceMaintenanceInfoActor.UpdateServiceInstanceMaintenanceInfoReturns(v2action.Warnings{"update-service-instance-warning"}, nil) 57 }) 58 59 It("updates the service instance with the latest maintenanceInfo on the plan", func() { 60 Expect(err).To(BeNil()) 61 Expect(fakeUpdateServiceInstanceMaintenanceInfoActor.UpdateServiceInstanceMaintenanceInfoCallCount()).To(Equal(1)) 62 guid, minfo := fakeUpdateServiceInstanceMaintenanceInfoActor.UpdateServiceInstanceMaintenanceInfoArgsForCall(0) 63 Expect(guid).To(Equal(serviceInstanceGUID)) 64 Expect(minfo).To(Equal(maintenanceInfo)) 65 66 Expect(fakeGetServicePlanActor.GetServicePlanCallCount()).To(Equal(1)) 67 planGUID := fakeGetServicePlanActor.GetServicePlanArgsForCall(0) 68 Expect(planGUID).To(Equal(servicePlanGUID)) 69 }) 70 71 It("returns all warnings", func() { 72 Expect(warnings).To(ConsistOf("plan-lookup-warning", "update-service-instance-warning")) 73 }) 74 75 When("updating the service instance fails", func() { 76 BeforeEach(func() { 77 fakeUpdateServiceInstanceMaintenanceInfoActor.UpdateServiceInstanceMaintenanceInfoReturns( 78 v2action.Warnings{"update-service-instance-warning"}, 79 errors.New("something really bad happened"), 80 ) 81 }) 82 83 It("returns the error and warnings", func() { 84 Expect(err).To(MatchError("something really bad happened")) 85 Expect(warnings).To(ConsistOf("plan-lookup-warning", "update-service-instance-warning")) 86 }) 87 }) 88 }) 89 90 When("fetching the plan fails", func() { 91 BeforeEach(func() { 92 fakeGetServicePlanActor.GetServicePlanReturns( 93 v2action.ServicePlan{}, 94 v2action.Warnings{"plan-lookup-warning"}, 95 errors.New("something really bad happened"), 96 ) 97 }) 98 99 It("returns an error and warnings", func() { 100 Expect(err).To(MatchError("something really bad happened")) 101 Expect(warnings).To(ConsistOf("plan-lookup-warning")) 102 }) 103 }) 104 }) 105 106 Describe("GetServiceInstanceByNameAndSpace", func() { 107 var serviceInstance v2action.ServiceInstance 108 109 JustBeforeEach(func() { 110 serviceInstance, warnings, err = composite.GetServiceInstanceByNameAndSpace("some-service-instance", "some-space-guid") 111 }) 112 113 When("the service instance exists", func() { 114 BeforeEach(func() { 115 fakeGetServiceInstanceActor.GetServiceInstanceByNameAndSpaceReturns( 116 v2action.ServiceInstance{ 117 GUID: "some-service-instance-guid", 118 Name: "some-service-instance", 119 }, 120 v2action.Warnings{"foo"}, 121 nil, 122 ) 123 }) 124 125 It("returns the service instance and warnings", func() { 126 Expect(err).ToNot(HaveOccurred()) 127 Expect(serviceInstance).To(Equal(v2action.ServiceInstance{ 128 GUID: "some-service-instance-guid", 129 Name: "some-service-instance", 130 })) 131 Expect(warnings).To(ConsistOf("foo")) 132 133 Expect(fakeGetServiceInstanceActor.GetServiceInstanceByNameAndSpaceCallCount()).To(Equal(1)) 134 135 serviceInstanceGUID, spaceGUID := fakeGetServiceInstanceActor.GetServiceInstanceByNameAndSpaceArgsForCall(0) 136 Expect(serviceInstanceGUID).To(Equal("some-service-instance")) 137 Expect(spaceGUID).To(Equal("some-space-guid")) 138 }) 139 }) 140 141 When("there is an error getting the service instance", func() { 142 BeforeEach(func() { 143 fakeGetServiceInstanceActor.GetServiceInstanceByNameAndSpaceReturns( 144 v2action.ServiceInstance{}, 145 v2action.Warnings{"foo"}, 146 errors.New("something really bad happened"), 147 ) 148 }) 149 150 It("returns an error and warnings", func() { 151 Expect(err).To(MatchError("something really bad happened")) 152 Expect(warnings).To(ConsistOf("foo")) 153 }) 154 }) 155 }) 156 })