Expect(ui.Outputs).To(ContainSubstrings( []string{"Adding route", "to app", "in org"}, )) }) It("tries to bind the route", func() { cmd.Execute(flagContext) Expect(routeRepo.BindCallCount()).To(Equal(1)) routeGUID, appGUID := routeRepo.BindArgsForCall(0) Expect(routeGUID).To(Equal("fake-route-guid")) Expect(appGUID).To(Equal("fake-app-guid")) }) Context("when binding the route succeeds", func() { BeforeEach(func() { routeRepo.BindReturns(nil) }) It("tells the user that it succeeded", func() { cmd.Execute(flagContext) Expect(ui.Outputs).To(ContainSubstrings( []string{"OK"}, )) }) }) Context("when binding the route fails", func() { BeforeEach(func() { routeRepo.BindReturns(errors.New("bind-error")) })
Expect(ui.Outputs).To(ContainSubstrings( []string{"Uploading"}, []string{"FAILED"}, )) }) Describe("when binding the route fails", func() { BeforeEach(func() { routeRepo.FindByHostAndDomainReturns(models.Route{ Host: "existing-app", Domain: models.DomainFields{Name: "foo.cf-app.com"}, }, nil) }) It("suggests using 'random-route' if the default route is taken", func() { routeRepo.BindReturns(errors.NewHttpError(400, errors.INVALID_RELATION, "The URL not available")) callPush("existing-app") Expect(ui.Outputs).To(ContainSubstrings( []string{"FAILED"}, []string{"existing-app.foo.cf-app.com", "already in use"}, []string{"TIP", "random-route"}, )) }) It("does not suggest using 'random-route' for other failures", func() { routeRepo.BindReturns(errors.NewHttpError(500, "some-code", "exception happened")) callPush("existing-app")