func makeAppWithRoute(appName string) models.Application { application := models.Application{} application.Name = appName application.Guid = "app-guid" domain := models.DomainFields{} domain.Name = "example.com" route := models.RouteSummary{Host: "foo", Domain: domain} secondRoute := models.RouteSummary{Host: appName, Domain: domain} packgeUpdatedAt, _ := time.Parse("2006-01-02T15:04:05Z07:00", "2012-10-24T19:54:00Z") application.State = "started" application.InstanceCount = 2 application.RunningInstances = 2 application.Memory = 256 application.Routes = []models.RouteSummary{route, secondRoute} application.PackageUpdatedAt = &packgeUpdatedAt return application }
}) It("does not require any flags", func() { requirementsFactory.LoginSuccess = true requirementsFactory.TargetedSpaceSuccess = true testcmd.RunCommand(cmd, []string{"my-app"}, requirementsFactory) Expect(testcmd.CommandDidPassRequirements).To(BeTrue()) }) }) Describe("scaling an app", func() { BeforeEach(func() { app = maker.NewApp(maker.Overrides{"name": "my-app", "guid": "my-app-guid"}) app.InstanceCount = 42 app.DiskQuota = 1024 app.Memory = 256 requirementsFactory.Application = app appRepo.UpdateAppResult = app }) Context("when no flags are specified", func() { It("prints a description of the app's limits", func() { testcmd.RunCommand(cmd, []string{"my-app"}, requirementsFactory) Expect(ui.Outputs).To(ContainSubstrings( []string{"Showing", "my-app", "my-org", "my-space", "my-user"}, []string{"OK"}, []string{"memory", "256M"},
Domain: models.DomainFields{ Name: "example.com", }, }} app2Routes := []models.RouteSummary{ models.RouteSummary{ Host: "app2", Domain: models.DomainFields{Name: "cfapps.io"}, }} app := models.Application{} app.Name = "Application-1" app.State = "started" app.RunningInstances = 1 app.InstanceCount = 1 app.Memory = 512 app.DiskQuota = 1024 app.Routes = app1Routes app.ZoneName = "tokyo" app2 := models.Application{} app2.Name = "Application-2" app2.State = "started" app2.RunningInstances = 1 app2.InstanceCount = 2 app2.Memory = 256 app2.DiskQuota = 1024 app2.Routes = app2Routes app2.ZoneName = ""
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.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.Name).To(Equal("my-cool-app")) Expect(updatedApp.Guid).To(Equal("my-cool-app-guid")) }) It("makes the right request with empty zone", func() {
It("should output whatever greg sez", func() { runCommand("my-app") Expect(ui.Outputs).To(ContainSubstrings( []string{"last uploaded", "unknown"}, )) }) }) }) Describe("when the app is not running", func() { BeforeEach(func() { application := models.Application{} application.Name = "my-app" application.Guid = "my-app-guid" application.State = "stopped" application.InstanceCount = 2 application.RunningInstances = 0 application.Memory = 256 now := time.Now() application.PackageUpdatedAt = &now appSummaryRepo.GetSummarySummary = application requirementsFactory.Application = application }) It("displays nice output when the app is stopped", func() { appSummaryRepo.GetSummaryErrorCode = errors.APP_STOPPED runCommand("my-app") Expect(appSummaryRepo.GetSummaryAppGuid).To(Equal("my-app-guid")) Expect(appInstancesRepo.GetInstancesArgsForCall(0)).To(Equal("my-app-guid"))
defaultInstanceErrorCodes = defaultInstanceErrorCodes[1:] } if errorCode != "" { apiErr = errors.NewHttpError(400, errorCode, "Error staging app") } } return } BeforeEach(func() { ui = new(testterm.FakeUI) requirementsFactory = &testreq.FakeReqFactory{} defaultAppForStart.Name = "my-app" defaultAppForStart.Guid = "my-app-guid" defaultAppForStart.InstanceCount = 2 domain := models.DomainFields{} domain.Name = "example.com" route := models.RouteSummary{} route.Host = "my-app" route.Domain = domain defaultAppForStart.Routes = []models.RouteSummary{route} instance1 := models.AppInstanceFields{} instance1.State = models.InstanceStarting instance2 := models.AppInstanceFields{} instance2.State = models.InstanceStarting