quotaRepo.FindByNameReturns(quota, nil) // updating an existing quota runCommand("--disallow-paid-service-plans", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).NonBasicServicesAllowed).To(BeFalse()) }) }) }) It("shows an error when updating fails", func() { quotaRepo.UpdateReturns(errors.New("I accidentally a quota")) runCommand("-m", "1M", "dead-serious") Expect(ui.Outputs()).To(ContainSubstrings([]string{"FAILED"})) }) It("shows a message explaining the update", func() { quota.Name = "i-love-ui" quotaRepo.FindByNameReturns(quota, nil) runCommand("-m", "50G", "i-love-ui") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Updating quota", "i-love-ui", "as", "my-user"}, []string{"OK"}, )) }) It("shows the user an error when finding the quota fails", func() { quotaRepo.FindByNameReturns(models.QuotaFields{}, errors.New("i can't believe it's not quotas!")) runCommand("-m", "50Somethings", "what-could-possibly-go-wrong?") Expect(ui.Outputs()).To(ContainSubstrings([]string{"FAILED"})) })
Context("when the user is logged in", func() { BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) }) It("fails requirements when called without a quota name", func() { runCommand() Expect(ui.Outputs()).To(ContainSubstrings( []string{"Incorrect Usage", "Requires an argument"}, )) }) Context("When the quota provided exists", func() { BeforeEach(func() { quota := models.QuotaFields{} quota.Name = "my-quota" quota.GUID = "my-quota-guid" quotaRepo.FindByNameReturns(quota, nil) }) It("deletes a quota with a given name when the user confirms", func() { ui.Inputs = []string{"y"} runCommand("my-quota") Expect(quotaRepo.DeleteArgsForCall(0)).To(Equal("my-quota-guid")) Expect(ui.Prompts).To(ContainSubstrings( []string{"Really delete the quota", "my-quota"}, ))