Context("When not providing a quota name", func() { It("fails with usage", func() { runCommand() Expect(ui.FailedWithUsage).To(BeTrue()) }) }) 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, }, 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"}, []string{"Routes", "2000"},
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, 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"},
}) It("passes requirements when provided two args", func() { runCommand("my-org", "my-quota") Expect(testcmd.CommandDidPassRequirements).To(BeTrue()) Expect(requirementsFactory.OrganizationName).To(Equal("my-org")) }) It("assigns a quota to an org", func() { org := models.Organization{} org.Name = "my-org" org.Guid = "my-org-guid" quota := models.QuotaFields{Name: "my-quota", Guid: "my-quota-guid"} quotaRepo.FindByNameReturns(quota, nil) requirementsFactory.Organization = org 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")) }) })
}) }) Describe("updating quota fields", func() { BeforeEach(func() { quota = models.QuotaFields{ Guid: "quota-guid", Name: "quota-name", MemoryLimit: 1024, RoutesLimit: 111, ServicesLimit: 222, } }) 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 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(