deps = commandregistry.Dependency{ UI: ui, RepoLocator: api.RepositoryLocator{}.SetAppEventsRepository(eventsRepo), Config: config, } 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) applicationRequirement = new(requirementsfakes.FakeApplicationRequirement) applicationRequirement.ExecuteReturns(nil) reqFactory.NewApplicationRequirementReturns(applicationRequirement) }) Describe("Requirements", func() { BeforeEach(func() { cmd.SetDependency(deps, false) }) Context("when not provided exactly 1 argument", func() { It("fails", func() { err := flagContext.Parse("too", "many") Expect(err).NotTo(HaveOccurred()) _, err = cmd.Requirements(reqFactory, flagContext) Expect(err).To(HaveOccurred()) Expect(ui.Outputs()).To(ContainSubstrings(
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 BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) }) Context("when an -i flag is provided", func() { BeforeEach(func() {
requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Failing{Message: "not targeting space"}) Expect(runCommand("my-app")).To(BeFalse()) }) }) Describe("getting health_check_type", func() { BeforeEach(func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) }) Context("when application is not found", func() { It("Fails", func() { appRequirement := new(requirementsfakes.FakeApplicationRequirement) appRequirement.ExecuteReturns(errors.New("no app")) requirementsFactory.NewApplicationRequirementReturns(appRequirement) Expect(runCommand("non-exist-app")).To(BeFalse()) }) }) Context("when application exists", func() { BeforeEach(func() { app := models.Application{} app.Name = "my-app" app.GUID = "my-app-guid" app.HealthCheckType = "port" applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.GetApplicationReturns(app) requirementsFactory.NewApplicationRequirementReturns(applicationReq)