It("fails when called without exactly one arg", func() { requirementsFactory.LoginSuccess = true passed := runCommand([]string{}) Expect(passed).To(BeFalse()) Expect(ui.Outputs).To(ContainSubstrings( []string{"Incorrect Usage", "Requires", "argument"}, )) }) }) It("works when given -p and a provider name", func() { offering := maker.NewServiceOffering("the-service-name") serviceRepo.FindServiceOfferingByLabelAndProviderReturns(offering, nil) ui.Inputs = []string{"yes"} runCommand([]string{"-p", "the-provider", "the-service-name"}) name, provider := serviceRepo.FindServiceOfferingByLabelAndProviderArgsForCall(0) Expect(name).To(Equal("the-service-name")) Expect(provider).To(Equal("the-provider")) Expect(serviceRepo.PurgeServiceOfferingArgsForCall(0)).To(Equal(offering)) }) It("works when not given a provider", func() { offering := maker.NewServiceOffering("the-service-name") serviceRepo.FindServiceOfferingByLabelAndProviderReturns(offering, nil)
}) It("tries to find the service offering by label and provider", func() { ui.Inputs = []string{"n"} cmd.Execute(flagContext) Expect(serviceRepo.FindServiceOfferingByLabelAndProviderCallCount()).To(Equal(1)) name, provider := serviceRepo.FindServiceOfferingByLabelAndProviderArgsForCall(0) Expect(name).To(Equal("service-name")) Expect(provider).To(Equal("provider-name")) }) Context("when finding the service offering succeeds", func() { BeforeEach(func() { serviceOffering := models.ServiceOffering{} serviceOffering.Guid = "service-offering-guid" serviceRepo.FindServiceOfferingByLabelAndProviderReturns(serviceOffering, nil) }) It("asks the user to confirm", func() { ui.Inputs = []string{"n"} cmd.Execute(flagContext) Expect(ui.Outputs).To(ContainSubstrings([]string{"WARNING"})) Expect(ui.Prompts).To(ContainSubstrings([]string{"Really purge service offering service-name from Cloud Foundry?"})) }) Context("when the user confirms", func() { BeforeEach(func() { ui.Inputs = []string{"y"} }) It("tells the user it will purge the service offering", func() {