}) It("fails when a space is not targeted", func() { requirementsFactory.LoginSuccess = true runCommand("banana", "faaaaasdf") Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) }) Context("when logged in and a space is targeted", func() { var serviceInstance models.ServiceInstance BeforeEach(func() { serviceInstance = models.ServiceInstance{} serviceInstance.Name = "different-name" serviceInstance.Guid = "different-name-guid" requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true requirementsFactory.ServiceInstance = serviceInstance }) It("renames the service, obviously", func() { runCommand("my-service", "new-name") Expect(ui.Outputs).To(ContainSubstrings( []string{"Renaming service", "different-name", "new-name", "my-org", "my-space", "my-user"}, []string{"OK"}, )) Expect(serviceRepo.RenameServiceServiceInstance).To(Equal(serviceInstance))
Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) Context("when logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) It("binds a service instance to an app", func() { app := models.Application{} app.Name = "my-app" app.Guid = "my-app-guid" serviceInstance := models.ServiceInstance{} serviceInstance.Name = "my-service" serviceInstance.Guid = "my-service-guid" requirementsFactory.Application = app requirementsFactory.ServiceInstance = serviceInstance serviceBindingRepo := &testapi.FakeServiceBindingRepo{} ui := callBindService([]string{"my-app", "my-service"}, requirementsFactory, serviceBindingRepo) Expect(requirementsFactory.ApplicationName).To(Equal("my-app")) Expect(requirementsFactory.ServiceInstanceName).To(Equal("my-service")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Binding service", "my-service", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, []string{"TIP"}, )) Expect(serviceBindingRepo.CreateServiceInstanceGuid).To(Equal("my-service-guid")) Expect(serviceBindingRepo.CreateApplicationGuid).To(Equal("my-app-guid"))
}) Context("when logged in, a space is targeted, and provided the name of a service that exists", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true }) Context("when the service is externally provided", func() { BeforeEach(func() { offering := models.ServiceOfferingFields{Label: "mysql", DocumentationUrl: "http://documentation.url", Description: "the-description"} plan := models.ServicePlanFields{Guid: "plan-guid", Name: "plan-name"} serviceInstance := models.ServiceInstance{} serviceInstance.Name = "service1" serviceInstance.Guid = "service1-guid" serviceInstance.ServicePlan = plan serviceInstance.ServiceOffering = offering requirementsFactory.ServiceInstance = serviceInstance }) It("shows the service", func() { runCommand("service1") Expect(ui.Outputs).To(ContainSubstrings( []string{"Service instance:", "service1"}, []string{"Service: ", "mysql"}, []string{"Plan: ", "plan-name"}, []string{"Description: ", "the-description"}, []string{"Documentation url: ", "http://documentation.url"}, ))