}) 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"}, )) }) }) }) Context("when the -r flag is not provided", func() { It("does not delete mapped routes", func() {
Context("when the route can be found", func() { BeforeEach(func() { routeRepo.FindReturns(models.Route{ GUID: "route-guid", }, nil) }) It("tries to delete the route", func() { Expect(err).NotTo(HaveOccurred()) Expect(routeRepo.DeleteCallCount()).To(Equal(1)) Expect(routeRepo.DeleteArgsForCall(0)).To(Equal("route-guid")) }) Context("when deleting the route succeeds", func() { BeforeEach(func() { routeRepo.DeleteReturns(nil) }) It("tells the user that it succeeded", func() { Expect(err).NotTo(HaveOccurred()) Expect(ui.Outputs()).To(ContainSubstrings( []string{"OK"}, )) }) }) Context("when deleting the route fails", func() { BeforeEach(func() { routeRepo.DeleteReturns(errors.New("delete-err")) })