BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedOrgRequirementReturns(new(requirementsfakes.FakeTargetedOrgRequirement)) }) It("unassigns a quota from a space", func() { space := models.Space{ SpaceFields: models.SpaceFields{ Name: "my-space", GUID: "my-space-guid", }, } quota := models.SpaceQuota{Name: "my-quota", GUID: "my-quota-guid"} quotaRepo.FindByNameReturns(quota, nil) spaceRepo.FindByNameReturns(space, nil) runCommand("my-space", "my-quota") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Unassigning space quota", "my-quota", "my-space", "my-user"}, []string{"OK"}, )) Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("my-quota")) spaceGUID, quotaGUID := quotaRepo.UnassignQuotaFromSpaceArgsForCall(0) Expect(spaceGUID).To(Equal("my-space-guid")) Expect(quotaGUID).To(Equal("my-quota-guid")) }) })
Describe("Execute", func() { var executeErr error JustBeforeEach(func() { flagContext.Parse("my-space", "quota-name") executeErr = cmd.Execute(flagContext) }) Context("when the space and quota both exist", func() { BeforeEach(func() { quotaRepo.FindByNameReturns( models.SpaceQuota{ Name: "quota-name", GUID: "quota-guid", MemoryLimit: 1024, InstanceMemoryLimit: 512, RoutesLimit: 111, ServicesLimit: 222, NonBasicServicesAllowed: true, OrgGUID: "my-org-guid", }, nil) spaceRepo.FindByNameReturns( models.Space{ SpaceFields: models.SpaceFields{ Name: "my-space", GUID: "my-space-guid", }, SpaceQuotaGUID: "", }, nil) })
[]string{"Incorrect Usage", "Requires an argument"}, )) }) It("fails requirements when an org is not targeted", func() { requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Failing{Message: "not targeting space"}) Expect(runCommand()).To(BeFalse()) }) Context("When the quota provided exists", func() { BeforeEach(func() { quota := models.SpaceQuota{} quota.Name = "my-quota" quota.GUID = "my-quota-guid" quota.OrgGUID = "my-org-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 space quota", "my-quota", "as", "my-user"}, []string{"OK"},
}) Context("when logged in", func() { JustBeforeEach(func() { requirementsFactory.NewTargetedOrgRequirementReturns(new(requirementsfakes.FakeTargetedOrgRequirement)) runCommand("quota-name") }) Context("when quotas exist", func() { BeforeEach(func() { quotaRepo.FindByNameReturns( models.SpaceQuota{ Name: "quota-name", MemoryLimit: 1024, InstanceMemoryLimit: -1, RoutesLimit: 111, ServicesLimit: 222, NonBasicServicesAllowed: true, OrgGUID: "my-org-guid", AppInstanceLimit: 5, ReservedRoutePortsLimit: "4", }, nil) }) It("lists the specific quota info", func() { Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("quota-name")) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Getting space quota quota-name info as", "my-user"}, []string{"OK"}, []string{"total memory limit", "1G"}, []string{"instance memory limit", "unlimited"}, []string{"routes", "111"},
RoutesLimit: 111, ServicesLimit: 222, AppInstanceLimit: 333, NonBasicServicesAllowed: false, OrgGUID: "my-org-guid", } quotaPaidService = models.SpaceQuota{NonBasicServicesAllowed: true} requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedOrgRequirementReturns(new(requirementsfakes.FakeTargetedOrgRequirement)) requirementsFactory.NewMinAPIVersionRequirementReturns(requirements.Passing{}) }) JustBeforeEach(func() { quotaRepo.FindByNameReturns(quota, nil) }) Context("when the -m flag is provided", func() { It("updates the memory limit", func() { runCommand("-m", "15G", "my-quota") Expect(quotaRepo.UpdateArgsForCall(0).Name).To(Equal("my-quota")) Expect(quotaRepo.UpdateArgsForCall(0).MemoryLimit).To(Equal(int64(15360))) }) It("alerts the user when parsing the memory limit fails", func() { runCommand("-m", "whoops", "wit mah hussle", "my-org") Expect(ui.Outputs()).To(ContainSubstrings([]string{"FAILED"})) }) })