taskGuid string err error ) BeforeEach(func() { taskGuid = "task-guid" }) JustBeforeEach(func() { err = controller.ResolvingTask(logger, taskGuid) }) 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(err).NotTo(HaveOccurred()) }) }) Context("when desiring the task fails", func() { BeforeEach(func() { fakeTaskDB.ResolvingTaskReturns(errors.New("kaboom")) }) It("responds with an error", func() { Expect(err).To(MatchError("kaboom")) }) }) })
}) 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")) }) It("does not make a request to the task's callback URL", func() { Consistently(fakeServer.ReceivedRequests, 0.25).Should(BeEmpty()) }) }) Context("when marking the task as resolving succeeds", func() { It("POSTs to the task's callback URL", func() {