} }) JustBeforeEach(func() { handler := handlers.NewCancelTaskHandler(logger, fakeBBSClient) handler.CancelTask(responseRecorder, request) }) It("logs the incoming and outgoing request", func() { Eventually(logger.TestSink.Buffer).Should(gbytes.Say("serving")) Eventually(logger.TestSink.Buffer).Should(gbytes.Say("canceling-task")) }) Context("when the task does not exist", func() { BeforeEach(func() { fakeBBSClient.CancelTaskReturns(models.ErrResourceNotFound) }) It("responds with 404 Not Found", func() { Expect(responseRecorder.Code).To(Equal(http.StatusNotFound)) }) }) Context("when the bbs responds with an unknown error", func() { BeforeEach(func() { fakeBBSClient.CancelTaskReturns(models.ErrUnknownError) }) It("responds with 500 Internal Server Error", func() { Expect(responseRecorder.Code).To(Equal(http.StatusInternalServerError)) })
}) Describe("Cancel", func() { BeforeEach(func() { var err error request, err = http.NewRequest("", "http://example.com?:task_guid=the-task-guid", nil) Expect(err).NotTo(HaveOccurred()) }) JustBeforeEach(func() { handler.Cancel(responseRecorder, request) }) Context("when cancelling the task is successful", func() { BeforeEach(func() { fakeClient.CancelTaskReturns(nil) }) It("responds with a 200", func() { Expect(fakeClient.CancelTaskCallCount()).To(Equal(1)) Expect(fakeClient.CancelTaskArgsForCall(0)).To(Equal("the-task-guid")) Expect(responseRecorder.Code).To(Equal(http.StatusOK)) }) }) Context("when the task cannot be found in the BBS", func() { BeforeEach(func() { fakeClient.CancelTaskReturns(models.ErrResourceNotFound) })