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  })