// yes, we're aware that the args here should probably be provided in a different order // erg: app-name -p some/path some-extra-arg // but the test infrastructure for parsing args and flags is sorely lacking It("fails when provided too many args", func() { callPush("-p", "path", "too-much", "app-name") Expect(testcmd.CommandDidPassRequirements).To(BeFalse()) }) }) Describe("when pushing a new app", func() { BeforeEach(func() { appRepo.ReadReturns.Error = errors.NewModelNotFoundError("App", "the-app") zipper.ZipReturns(nil) zipper.GetZipSizeReturns(9001, nil) actor.GatherFilesReturns(nil, nil) actor.UploadAppReturns(nil) }) Context("when the default route for the app already exists", func() { BeforeEach(func() { route := models.Route{} route.Guid = "my-route-guid" route.Host = "my-new-app" route.Domain = domainRepo.ListDomainsForOrgDomains[0] routeRepo.FindByHostAndDomainReturns.Route = route }) It("binds to existing routes", func() { callPush("my-new-app")
Describe("when pushing a new app", func() { BeforeEach(func() { appRepo.ReadReturns(models.Application{}, errors.NewModelNotFoundError("App", "the-app")) appRepo.CreateStub = func(params models.AppParams) (models.Application, error) { a := models.Application{} a.Guid = *params.Name + "-guid" a.Name = *params.Name a.State = "stopped" return a, nil } zipper.ZipReturns(nil) zipper.GetZipSizeReturns(9001, nil) actor.GatherFilesReturns(nil, true, nil) actor.UploadAppReturns(nil) }) Context("when the default route for the app already exists", func() { BeforeEach(func() { route := models.Route{} route.Guid = "my-route-guid" route.Host = "app-name" route.Domain = domainRepo.ListDomainsForOrgDomains[0] routeRepo.FindByHostAndDomainReturns.Route = route }) It("notifies users about the error actor.GatherFiles() returns", func() { actor.GatherFilesReturns([]resources.AppFileResource{}, false, errors.New("failed to get file mode"))