/** * {@inheritdoc} */ public function handle(ApiCallInterface $apiCall) { if ($apiCall->getId() === null) { $id = $this->identityGenerator->getIdentity(); $apiCall->setId($id); } $serializedApiCall = call_user_func($this->serializer, $apiCall); fwrite($this->stream, $serializedApiCall); }
function it_can_handle_new_apicall(IdentityGeneratorInterface $identityGenerator, SerializerInterface $serializer, ApiCallInterface $apiCall) { $stream = fopen('php://temp', 'a+'); $this->beConstructedWith($stream, $identityGenerator, $serializer); $identity = 'my id'; $serializedApiCall = 'my api call'; $apiCall->getId()->willReturn(null); $identityGenerator->getIdentity()->willReturn($identity); $apiCall->setId($identity)->shouldBeCalled(); $serializer->__invoke($apiCall)->willReturn($serializedApiCall); $this->handle($apiCall); $writtenData = stream_get_contents($stream, -1, 0); if ($writtenData !== $serializedApiCall) { throw new RuntimeException(sprintf("Written data did not match expected data:\nWritten: %s\nExpected: %s", $writtenData, $serializedApiCall)); } }