Context("when reading the task from the BBS fails", func() { BeforeEach(func() { fakeClient.TaskByGuidReturns(nil, errors.New("Something went wrong")) }) It("responds with an error", func() { Expect(responseRecorder.Code).To(Equal(http.StatusInternalServerError)) }) }) Context("when the task is successfully found in the BBS", func() { var task *models.Task BeforeEach(func() { task = model_helpers.NewValidTask("the-task-guid") task.State = models.Task_Running fakeClient.TaskByGuidReturns(task, nil) }) It("retrieves the task by the given guid", func() { guid := fakeClient.TaskByGuidArgsForCall(0) Expect(guid).To(Equal(task.TaskGuid)) }) It("gets the task", func() { Expect(responseRecorder.Code).To(Equal(http.StatusOK)) var actualTask receptor.TaskResponse err := json.Unmarshal(responseRecorder.Body.Bytes(), &actualTask) Expect(err).NotTo(HaveOccurred())
func demoteToCompleted(task *models.Task) *models.Task { task.State = models.Task_Completed return task }
}, }, } }) It("serializes the state", func() { EXPECTED_STATE_MAP := map[models.Task_State]string{ models.Task_Invalid: "INVALID", models.Task_Pending: "PENDING", models.Task_Running: "RUNNING", models.Task_Completed: "COMPLETED", models.Task_Resolving: "RESOLVING", } for modelState, jsonState := range EXPECTED_STATE_MAP { task.State = modelState Expect(serialization.TaskToResponse(task).State).To(Equal(jsonState)) } }) It("serializes the task's fields", func() { actualResponse := serialization.TaskToResponse(task) expectedResponse := receptor.TaskResponse{ TaskGuid: "the-task-guid", Domain: "the-domain", CellID: "the-cell-id", CreatedAt: 1234, FailureReason: "the-failure-reason", Failed: true, Result: "the-result",