runCommand() Expect(ui.Outputs()).To(ContainSubstrings( []string{"Incorrect Usage", "Requires", "argument"}, )) }) }) Context("When providing a quota name", func() { Context("that exists", func() { BeforeEach(func() { quotaRepo.FindByNameReturns(models.QuotaFields{ GUID: "my-quota-guid", Name: "muh-muh-muh-my-qua-quota", MemoryLimit: 512, InstanceMemoryLimit: 5, RoutesLimit: 2000, ServicesLimit: 47, NonBasicServicesAllowed: true, AppInstanceLimit: 7, ReservedRoutePorts: "5", }, nil) }) It("shows you that quota", func() { runCommand("muh-muh-muh-my-qua-quota") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Getting quota", "muh-muh-muh-my-qua-quota", "my-user"}, []string{"OK"}, []string{"Total Memory", "512M"}, []string{"Instance Memory", "5M"},
}) 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"}, )) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Deleting quota", "my-quota", "my-user"}, []string{"OK"},
}) Context("when the user is logged in", func() { BeforeEach(func() { quota = models.QuotaFields{ GUID: "quota-guid", Name: "quota-name", MemoryLimit: 1024, RoutesLimit: 111, ServicesLimit: 222, AppInstanceLimit: 333, } }) JustBeforeEach(func() { quotaRepo.FindByNameReturns(quota, nil) }) Context("when the -i flag is provided", func() { It("updates the instance memory limit", func() { runCommand("-i", "15G", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).Name).To(Equal("quota-name")) Expect(quotaRepo.UpdateArgsForCall(0).InstanceMemoryLimit).To(Equal(int64(15360))) }) It("totally accepts -1 as a value because it means unlimited", func() { runCommand("-i", "-1", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).Name).To(Equal("quota-name")) Expect(quotaRepo.UpdateArgsForCall(0).InstanceMemoryLimit).To(Equal(int64(-1))) })
Context("when logged in", func() { BeforeEach(func() { org := models.Organization{} org.Name = "my-org" org.GUID = "my-org-guid" orgReq := new(requirementsfakes.FakeOrganizationRequirement) orgReq.GetOrganizationReturns(org) requirementsFactory.NewOrganizationRequirementReturns(orgReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) }) It("assigns a quota to an org", func() { quota := models.QuotaFields{Name: "my-quota", GUID: "my-quota-guid"} quotaRepo.FindByNameReturns(quota, nil) runCommand("my-org", "my-quota") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Setting quota", "my-quota", "my-org", "my-user"}, []string{"OK"}, )) Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("my-quota")) orgGUID, quotaGUID := quotaRepo.AssignQuotaToOrgArgsForCall(0) Expect(orgGUID).To(Equal("my-org-guid")) Expect(quotaGUID).To(Equal("my-quota-guid")) }) }) })
}) Context("when allowing a non-defualt quota", func() { var ( quota models.QuotaFields ) BeforeEach(func() { quota = models.QuotaFields{ Name: "non-default-quota", GUID: "non-default-quota-guid", } }) It("creates an org with a non-default quota", func() { quotaRepo.FindByNameReturns(quota, nil) runCommand("-q", "non-default-quota", "my-org") Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("non-default-quota")) Expect(orgRepo.CreateArgsForCall(0).QuotaDefinition.GUID).To(Equal("non-default-quota-guid")) Expect(ui.Outputs).To(ContainSubstrings( []string{"Creating org", "my-org"}, []string{"OK"}, )) }) It("fails and warns the user when the quota cannot be found", func() { quotaRepo.FindByNameReturns(models.QuotaFields{}, errors.New("Could not find quota")) runCommand("-q", "non-default-quota", "my-org") Expect(ui.Outputs).To(ContainSubstrings(