}) It("fails with usage when not provided with exactly three args", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) runCommand("zomg", "too", "many", "args") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Incorrect Usage", "Requires", "arguments"}, )) }) }) Context("when logged in, a space is targeted and given enough args", func() { BeforeEach(func() { app.EnvironmentVars = map[string]interface{}{"foo": "bar"} applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.GetApplicationReturns(app) requirementsFactory.NewApplicationRequirementReturns(applicationReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) }) Context("when it is new", func() { It("is created", func() { runCommand("my-app", "DATABASE_URL", "mysql://new-example.com/my-db") Expect(ui.Outputs()).To(ContainSubstrings( []string{ "Setting env variable", "DATABASE_URL",
}) It("fails with usage when not provided with exactly 2 args", func() { requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.GetApplicationReturns(app) requirementsFactory.NewApplicationRequirementReturns(applicationReq) Expect(runCommand("too", "many", "args")).To(BeFalse()) }) }) Context("when logged in, a space is targeted and provided enough args", func() { BeforeEach(func() { app.EnvironmentVars = map[string]interface{}{"foo": "bar", "DATABASE_URL": "mysql://example.com/my-db"} applicationReq := new(requirementsfakes.FakeApplicationRequirement) applicationReq.GetApplicationReturns(app) requirementsFactory.NewApplicationRequirementReturns(applicationReq) requirementsFactory.NewLoginRequirementReturns(requirements.Passing{}) requirementsFactory.NewTargetedSpaceRequirementReturns(requirements.Passing{}) }) It("updates the app and tells the user what happened", func() { runCommand("my-app", "DATABASE_URL") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Removing env variable", "DATABASE_URL", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, ))
}) It("sets the health check timeout", func() { Expect(runCLIErr).NotTo(HaveOccurred()) Expect(fakeManifest.HealthCheckTimeoutCallCount()).To(Equal(1)) name, timeout := fakeManifest.HealthCheckTimeoutArgsForCall(0) Expect(name).To(Equal("app-name")) Expect(timeout).To(Equal(5)) }) }) Context("when the app has environment vars", func() { BeforeEach(func() { application.EnvironmentVars = map[string]interface{}{ "float64-key": float64(5), "bool-key": true, "string-key": "string", } appSummaryRepo.GetSummaryReturns(application, nil) }) It("sets the env vars", func() { Expect(runCLIErr).NotTo(HaveOccurred()) Expect(fakeManifest.EnvironmentVarsCallCount()).To(Equal(3)) actuals := map[string]interface{}{} for i := 0; i < 3; i++ { name, k, v := fakeManifest.EnvironmentVarsArgsForCall(i) Expect(name).To(Equal("app-name")) actuals[k] = v }