github.com/loggregator/cli@v6.33.1-0.20180224010324-82334f081791+incompatible/cf/commands/organization/set_quota_test.go (about) 1 package organization_test 2 3 import ( 4 "code.cloudfoundry.org/cli/cf/api/quotas/quotasfakes" 5 "code.cloudfoundry.org/cli/cf/commandregistry" 6 "code.cloudfoundry.org/cli/cf/configuration/coreconfig" 7 "code.cloudfoundry.org/cli/cf/models" 8 "code.cloudfoundry.org/cli/cf/requirements" 9 "code.cloudfoundry.org/cli/cf/requirements/requirementsfakes" 10 testcmd "code.cloudfoundry.org/cli/util/testhelpers/commands" 11 testconfig "code.cloudfoundry.org/cli/util/testhelpers/configuration" 12 testterm "code.cloudfoundry.org/cli/util/testhelpers/terminal" 13 14 . "code.cloudfoundry.org/cli/util/testhelpers/matchers" 15 . "github.com/onsi/ginkgo" 16 . "github.com/onsi/gomega" 17 ) 18 19 var _ = Describe("set-quota command", func() { 20 var ( 21 ui *testterm.FakeUI 22 quotaRepo *quotasfakes.FakeQuotaRepository 23 requirementsFactory *requirementsfakes.FakeFactory 24 configRepo coreconfig.Repository 25 deps commandregistry.Dependency 26 ) 27 28 updateCommandDependency := func(pluginCall bool) { 29 deps.UI = ui 30 deps.Config = configRepo 31 deps.RepoLocator = deps.RepoLocator.SetQuotaRepository(quotaRepo) 32 commandregistry.Commands.SetCommand(commandregistry.Commands.FindCommand("set-quota").SetDependency(deps, pluginCall)) 33 } 34 35 runCommand := func(args ...string) bool { 36 return testcmd.RunCLICommand("set-quota", args, requirementsFactory, updateCommandDependency, false, ui) 37 } 38 39 BeforeEach(func() { 40 ui = new(testterm.FakeUI) 41 quotaRepo = new(quotasfakes.FakeQuotaRepository) 42 configRepo = testconfig.NewRepositoryWithDefaults() 43 requirementsFactory = new(requirementsfakes.FakeFactory) 44 }) 45 46 It("fails with usage when provided too many or two few args", func() { 47 runCommand("org") 48 Expect(ui.Outputs()).To(ContainSubstrings( 49 []string{"Incorrect Usage", "Requires", "arguments"}, 50 )) 51 52 runCommand("org", "quota", "extra-stuff") 53 Expect(ui.Outputs()).To(ContainSubstrings( 54 []string{"Incorrect Usage", "Requires", "arguments"}, 55 )) 56 57 }) 58 59 It("fails requirements when not logged in", func() { 60 requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"}) 61 Expect(runCommand("my-org", "my-quota")).To(BeFalse()) 62 }) 63 64 Context("when logged in", func() { 65 BeforeEach(func() { 66 org := models.Organization{} 67 org.Name = "my-org" 68 org.GUID = "my-org-guid" 69 orgReq := new(requirementsfakes.FakeOrganizationRequirement) 70 orgReq.GetOrganizationReturns(org) 71 requirementsFactory.NewOrganizationRequirementReturns(orgReq) 72 73 requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) 74 }) 75 76 It("assigns a quota to an org", func() { 77 quota := models.QuotaFields{Name: "my-quota", GUID: "my-quota-guid"} 78 quotaRepo.FindByNameReturns(quota, nil) 79 80 runCommand("my-org", "my-quota") 81 82 Expect(ui.Outputs()).To(ContainSubstrings( 83 []string{"Setting quota", "my-quota", "my-org", "my-user"}, 84 []string{"OK"}, 85 )) 86 87 Expect(quotaRepo.FindByNameArgsForCall(0)).To(Equal("my-quota")) 88 orgGUID, quotaGUID := quotaRepo.AssignQuotaToOrgArgsForCall(0) 89 Expect(orgGUID).To(Equal("my-org-guid")) 90 Expect(quotaGUID).To(Equal("my-quota-guid")) 91 }) 92 }) 93 })