repo.CreateRestageRequest("some-cool-app-guid") Expect(handler).To(HaveAllRequestsCalled()) }) }) Describe("updating applications", func() { It("makes the right request", func() { ts, handler, repo := createAppRepo([]testnet.TestRequest{updateApplicationRequest}) defer ts.Close() app := models.Application{} app.GUID = "my-app-guid" app.Name = "my-cool-app" app.BuildpackURL = "buildpack-url" app.Command = "some-command" app.HealthCheckType = "none" app.Memory = 2048 app.InstanceCount = 3 app.Stack = &models.Stack{GUID: "some-stack-guid"} app.SpaceGUID = "some-space-guid" app.State = "started" app.DiskQuota = 512 Expect(app.EnvironmentVars).To(BeNil()) updatedApp, apiErr := repo.Update(app.GUID, app.ToParams()) Expect(handler).To(HaveAllRequestsCalled()) Expect(apiErr).NotTo(HaveOccurred()) Expect(updatedApp.Command).To(Equal("some-command")) Expect(updatedApp.DetectedStartCommand).To(Equal("detected command"))
Expect(appRepo.UpdateCallCount()).To(Equal(1)) appGuid, appParams := appRepo.UpdateArgsForCall(0) Expect(appGuid).To(Equal(zeroInstanceApp.GUID)) startedState := "started" Expect(appParams).To(Equal(models.AppParams{State: &startedState})) zeroInstanceApp.State = startedState ui, _, _ = startAppWithInstancesAndErrors(zeroInstanceApp, requirementsFactory) Expect(ui.Outputs()).To(ContainSubstrings( []string{"App my-app is already started"}, )) Expect(appRepo.UpdateCallCount()).To(Equal(1)) }) }) It("displays the command start command instead of the detected start command when set", func() { defaultAppForStart.Command = "command start command" defaultAppForStart.DetectedStartCommand = "detected start command" ui, appRepo, _ = startAppWithInstancesAndErrors(defaultAppForStart, requirementsFactory) Expect(appRepo.GetAppCallCount()).To(Equal(1)) Expect(appRepo.GetAppArgsForCall(0)).To(Equal("my-app-guid")) Expect(ui.Outputs()).To(ContainSubstrings( []string{"App my-app was started using this command `command start command`"}, )) }) It("displays the detected start command when no other command is set", func() { defaultAppForStart.DetectedStartCommand = "detected start command" defaultAppForStart.Command = "" ui, appRepo, _ := startAppWithInstancesAndErrors(defaultAppForStart, requirementsFactory)
}) Context("when saving the manifest fails", func() { BeforeEach(func() { fakeManifest.SaveReturns(errors.New("save-err")) }) It("fails with error", func() { Expect(runCLIErr).To(HaveOccurred()) Expect(runCLIErr.Error()).To(Equal("Error creating manifest file: save-err")) }) }) Context("when the app has a command", func() { BeforeEach(func() { application.Command = "app-command" appSummaryRepo.GetSummaryReturns(application, nil) }) It("sets the start command", func() { Expect(runCLIErr).NotTo(HaveOccurred()) Expect(fakeManifest.StartCommandCallCount()).To(Equal(1)) name, command := fakeManifest.StartCommandArgsForCall(0) Expect(name).To(Equal("app-name")) Expect(command).To(Equal("app-command")) }) }) Context("when the app has a buildpack", func() { BeforeEach(func() { application.BuildpackURL = "buildpack"