It("returns the error immediately", func() { err := routeActor.UnbindAll(app) Expect(err).To(Equal(expectedError)) Expect(fakeRouteRepository.UnbindCallCount()).To(Equal(1)) }) }) Context("when unbinding works", func() { It("unbinds the route for the app", func() { err := routeActor.UnbindAll(app) Expect(err).NotTo(HaveOccurred()) Expect(fakeRouteRepository.UnbindCallCount()).To(Equal(2)) routeGUID, appGUID := fakeRouteRepository.UnbindArgsForCall(0) Expect(routeGUID).To(Equal("my-route-guid-1")) Expect(appGUID).To(Equal("my-app-guid")) routeGUID, appGUID = fakeRouteRepository.UnbindArgsForCall(1) Expect(routeGUID).To(Equal("my-route-guid-2")) Expect(appGUID).To(Equal("my-app-guid")) Expect(fakeUI.SayCallCount()).To(Equal(2)) message, _ := fakeUI.SayArgsForCall(0) Expect(message).To(ContainSubstring("Removing route")) message, _ = fakeUI.SayArgsForCall(1) Expect(message).To(ContainSubstring("Removing route")) })
Context("when the returned route has an app with the requested app's guid", func() { BeforeEach(func() { route := models.Route{ GUID: "route-guid", Apps: []models.ApplicationFields{ {GUID: "fake-app-guid"}, }, } routeRepo.FindReturns(route, nil) }) It("tries to unbind the route from the app", func() { Expect(err).NotTo(HaveOccurred()) Expect(routeRepo.UnbindCallCount()).To(Equal(1)) routeGUID, appGUID := routeRepo.UnbindArgsForCall(0) Expect(routeGUID).To(Equal("route-guid")) Expect(appGUID).To(Equal("fake-app-guid")) }) Context("when unbinding the route from the app fails", func() { BeforeEach(func() { routeRepo.UnbindReturns(errors.New("unbind-err")) }) It("returns an error", func() { Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("unbind-err")) }) })