Context("when claiming the actual lrp in the DB succeeds", func() { BeforeEach(func() { fakeActualLRPDB.ClaimActualLRPReturns(&models.ActualLRPGroup{Instance: &actualLRP}, &models.ActualLRPGroup{Instance: &afterActualLRP}, nil) }) It("response with no error", func() { Expect(responseRecorder.Code).To(Equal(http.StatusOK)) response := &models.ActualLRPLifecycleResponse{} err := response.Unmarshal(responseRecorder.Body.Bytes()) Expect(err).NotTo(HaveOccurred()) Expect(response.Error).To(BeNil()) }) It("claims the actual lrp by process guid and index", func() { Expect(fakeActualLRPDB.ClaimActualLRPCallCount()).To(Equal(1)) _, actualProcessGuid, actualIndex, actualInstanceKey := fakeActualLRPDB.ClaimActualLRPArgsForCall(0) Expect(actualProcessGuid).To(Equal(processGuid)) Expect(actualIndex).To(BeEquivalentTo(index)) Expect(*actualInstanceKey).To(Equal(instanceKey)) }) It("emits a change event to the hub", func() { Eventually(actualHub.EmitCallCount).Should(Equal(1)) event := actualHub.EmitArgsForCall(0) changedEvent, ok := event.(*models.ActualLRPChangedEvent) Expect(ok).To(BeTrue()) Expect(changedEvent.Before).To(Equal(&models.ActualLRPGroup{Instance: &actualLRP})) Expect(changedEvent.After).To(Equal(&models.ActualLRPGroup{Instance: &afterActualLRP})) })