deps = commandregistry.Dependency{ UI: ui, PluginModels: &commandregistry.PluginModels{}, RepoLocator: api.RepositoryLocator{}.SetApplicationRepository(appRepo), } cmd = &service.ShowService{} flagContext = flags.NewFlagContext(cmd.MetaData().Flags) reqFactory = new(requirementsfakes.FakeFactory) loginRequirement = &passingRequirement{Name: "login-requirement"} reqFactory.NewLoginRequirementReturns(loginRequirement) targetedSpaceRequirement = &passingRequirement{Name: "targeted-space-requirement"} reqFactory.NewTargetedSpaceRequirementReturns(targetedSpaceRequirement) serviceInstanceRequirement = &requirementsfakes.FakeServiceInstanceRequirement{} reqFactory.NewServiceInstanceRequirementReturns(serviceInstanceRequirement) }) Describe("Requirements", func() { BeforeEach(func() { cmd.SetDependency(deps, pluginCall) }) Context("when not provided exactly 1 argument", func() { It("fails", func() { err := flagContext.Parse("too", "many") Expect(err).NotTo(HaveOccurred()) Expect(func() { cmd.Requirements(reqFactory, flagContext) }).To(Panic()) Expect(ui.Outputs()).To(ContainSubstrings(
runCommand() Expect(ui.Outputs()).To(ContainSubstrings( []string{"Incorrect Usage", "Requires", "argument"}, )) }) It("fails requirements when not logged in", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"}) Expect(runCommand("my-app")).To(BeFalse()) }) It("fails if a space is not targeted", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Failing{Message: "not targeting space"}) Expect(runCommand("my-app")).To(BeFalse()) }) It("fails if a application is not found", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.ExecuteReturns(errors.New("no app")) requirementsFactory.NewApplicationRequirementReturns(applicationReq) Expect(runCommand("my-app")).To(BeFalse()) }) Describe("Flag options", func() { var args []string
deps commandregistry.Dependency ) updateCommandDependency := func(pluginCall bool) { deps.UI = ui deps.RepoLocator = deps.RepoLocator.SetRouteRepository(routeRepo).SetDomainRepository(domainRepo) deps.Config = configRepo commandregistry.Commands.SetCommand(commandregistry.Commands.FindCommand("routes").SetDependency(deps, pluginCall)) } BeforeEach(func() { ui = &testterm.FakeUI{} configRepo = testconfig.NewRepositoryWithDefaults() requirementsFactory = new(requirementsfakes.FakeFactory) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) routeRepo = new(apifakes.FakeRouteRepository) domainRepo = new(apifakes.FakeDomainRepository) }) runCommand := func(args ...string) bool { return testcmd.RunCLICommand("routes", args, requirementsFactory, updateCommandDependency, false, ui) } Describe("login requirements", func() { It("fails if the user is not logged in", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Failing{Message: "not logged in"}) Expect(runCommand()).To(BeFalse()) }) It("fails when an org and space is not targeted", func() {
Expect(runCommand()).To(BeFalse()) }) It("fails when a space is not targeted", func() { requirementsFactory.NewApplicationRequirementReturns(applicationReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) Expect(runCommand()).To(BeFalse()) }) }) Context("when logged in, targeting a space, and an app name is provided", func() { BeforeEach(func() { requirementsFactory.NewApplicationRequirementReturns(applicationReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) stopper.ApplicationStopReturns(app, nil) }) It("restarts the given app", func() { runCommand("my-app") application, orgName, spaceName := stopper.ApplicationStopArgsForCall(0) Expect(application).To(Equal(app)) Expect(orgName).To(Equal(config.OrganizationFields().Name)) Expect(spaceName).To(Equal(config.SpaceFields().Name)) application, orgName, spaceName = starter.ApplicationStartArgsForCall(0) Expect(application).To(Equal(app)) Expect(orgName).To(Equal(config.OrganizationFields().Name))