taskworkpool.HandleCompletedTask(logger, httpClient, taskDB, task) return nil } var process ifrit.Process JustBeforeEach(func() { process = ifrit.Invoke(ifrit.RunFunc(simulateTaskCompleting)) }) AfterEach(func() { ginkgomon.Kill(process) }) Context("when the task has a completion callback URL", func() { BeforeEach(func() { Expect(taskDB.ResolvingTaskCallCount()).To(Equal(0)) }) It("marks the task as resolving", func() { statusCodes <- 200 Eventually(taskDB.ResolvingTaskCallCount).Should(Equal(1)) _, actualGuid := taskDB.ResolvingTaskArgsForCall(0) Expect(actualGuid).To(Equal("the-task-guid")) }) Context("when marking the task as resolving fails", func() { BeforeEach(func() { taskDB.ResolvingTaskReturns(models.NewError(models.Error_UnknownError, "failed to resolve task")) })
Describe("ResolvingTask", func() { Context("when the resolving request is normal", func() { BeforeEach(func() { requestBody = &models.TaskGuidRequest{ TaskGuid: "task-guid", } }) JustBeforeEach(func() { request := newTestRequest(requestBody) handler.ResolvingTask(responseRecorder, request) }) Context("when resolvinging the task succeeds", func() { It("returns no error", func() { Expect(fakeTaskDB.ResolvingTaskCallCount()).To(Equal(1)) _, taskGuid := fakeTaskDB.ResolvingTaskArgsForCall(0) Expect(taskGuid).To(Equal("task-guid")) Expect(responseRecorder.Code).To(Equal(http.StatusOK)) response := &models.TaskLifecycleResponse{} err := response.Unmarshal(responseRecorder.Body.Bytes()) Expect(err).NotTo(HaveOccurred()) Expect(response.Error).To(BeNil()) }) }) Context("when the DB returns an unrecoverable error", func() { BeforeEach(func() { fakeTaskDB.ResolvingTaskReturns(models.NewUnrecoverableError(nil))