}) Context("when the user is logged in", func() { BeforeEach(func() { requirementsFactory.LoginSuccess = true }) It("fails requirements when called without a quota name", func() { runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) Context("When the quota provided exists", func() { BeforeEach(func() { quota := models.QuotaFields{} quota.Name = "my-quota" quota.Guid = "my-quota-guid" quotaRepo.FindByNameReturns.Quota = quota }) It("deletes a quota with a given name when the user confirms", func() { ui.Inputs = []string{"y"} runCommand("my-quota") Expect(quotaRepo.DeleteCalledWith.Guid).To(Equal("my-quota-guid")) Expect(ui.Prompts).To(ContainSubstrings( []string{"Really delete the quota", "my-quota"}, ))
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 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"})) }) 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"}, )) }) })