return nil } ui, _ = callDeleteOrphanedRoutes("y", []string{}, requirementsFactory, routeRepo) Expect(ui.Prompts).To(ContainSubstrings( []string{"Really delete orphaned routes"}, )) Expect(ui.Outputs()).To(ContainSubstrings( []string{"Deleting route", "hostname-2.cookieclicker.co"}, []string{"OK"}, )) Expect(routeRepo.DeleteCallCount()).To(Equal(1)) Expect(routeRepo.DeleteArgsForCall(0)).To(Equal("route2-guid")) }) It("passes when the force flag is used", func() { var ui *testterm.FakeUI routeRepo.ListRoutesStub = func(cb func(models.Route) bool) error { route := models.Route{} route.Host = "hostname-1" route.Domain = models.DomainFields{Name: "example.com"} route.Apps = []models.ApplicationFields{ { Name: "dora", }, }
route2 := models.RouteSummary{} route2.GUID = "the-second-route-guid" route2.Host = "my-app-is-bad.com" appRepo.ReadReturns(models.Application{ Routes: []models.RouteSummary{route1, route2}, }, nil) }) Context("when the -r flag is provided", func() { Context("when deleting routes succeeds", func() { It("deletes the app's routes", func() { runCommand("-f", "-r", "app-to-delete") Expect(routeRepo.DeleteCallCount()).To(Equal(2)) Expect(routeRepo.DeleteArgsForCall(0)).To(Equal("the-first-route-guid")) Expect(routeRepo.DeleteArgsForCall(1)).To(Equal("the-second-route-guid")) }) }) Context("when deleting routes fails", func() { BeforeEach(func() { routeRepo.DeleteReturns(errors.New("an-error")) }) It("fails with the api error message", func() { runCommand("-f", "-r", "app-to-delete") Expect(ui.Outputs()).To(ContainSubstrings( []string{"Deleting", "app-to-delete"}, []string{"FAILED"},