}) }) }) }) Describe("re-pushing an existing app", func() { var existingApp models.Application BeforeEach(func() { existingApp = models.Application{} existingApp.Name = "existing-app" existingApp.Guid = "existing-app-guid" existingApp.Command = "unicorn -c config/unicorn.rb -D" existingApp.EnvironmentVars = map[string]string{ "crazy": "pants", "FOO": "NotYoBaz", "foo": "manchu", } appRepo.ReadReturns.App = existingApp appRepo.UpdateAppResult = existingApp }) It("resets the app's buildpack when the -b flag is provided as 'default'", func() { callPush("-b", "default", "existing-app") Expect(*appRepo.UpdateParams.BuildpackUrl).To(Equal("")) }) It("resets the app's command when the -c flag is provided as 'default'", func() { callPush("-c", "default", "existing-app") Expect(*appRepo.UpdateParams.Command).To(Equal(""))
Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) It("fails with usage when not provided with exactly 2 args", func() { requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true requirementsFactory.Application = app runCommand("too", "many", "args") Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) }) Context("when logged in, a space is targeted and provided enough args", func() { BeforeEach(func() { app.EnvironmentVars = map[string]string{"foo": "bar", "DATABASE_URL": "mysql://example.com/my-db"} requirementsFactory.Application = app requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true }) 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"}, )) Expect(requirementsFactory.ApplicationName).To(Equal("my-app"))
Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) It("fails with usage when not provided with exactly three args", func() { requirementsFactory.Application = app requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true runCommand("zomg", "too", "many", "args") Expect(ui.FailedWithUsage).To(BeTrue()) }) }) Context("when logged in, a space is targeted and given enough args", func() { BeforeEach(func() { app.EnvironmentVars = map[string]string{"foo": "bar"} requirementsFactory.Application = app requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true }) 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", "mysql://new-example.com/my-db", "my-app",