function it_handles_the_end_of_a_request(IAdapter $adapter, IEvent $event)
 {
     $event->setResponse('response')->shouldBeCalled();
     $event->setLatency(Argument::type('double'))->shouldBeCalled();
     $adapter->save($event)->shouldBeCalled();
     $this->end($event, 'response');
 }
 /**
  * Log the response.
  *
  * @param IEvent $event
  * @param string $response
  *
  * @return IEvent
  */
 public function end(IEvent $event, $response)
 {
     $endTimestamp = microtime(true);
     $event->setResponse($response);
     $event->setLatency($endTimestamp - $this->startTimestamp);
     return $this->adapter->save($event);
 }
 /**
  * Save event.
  *
  * @param IEvent $event
  *
  * @return IEvent
  */
 public function save(IEvent $event)
 {
     if (null !== $event->getId()) {
         return $event;
     }
     $event->setId((string) Uuid::uuid4());
     $this->events[] = $event;
     return $event;
 }
 function it_returns_its_last_event(IEvent $event, PDO $connection, PDOStatement $statement)
 {
     $event->getId()->shouldBeCalled()->willReturn(null);
     $event->getEndpoint()->shouldBeCalled()->willReturn('http://example.com');
     $event->getMethod()->shouldBeCalled()->willReturn('POST');
     $event->getRequest()->shouldBeCalled()->willReturn('request');
     $event->getReference()->shouldBeCalled()->willReturn(null);
     $connection->prepare('INSERT INTO table VALUES(:endpoint, :method, :reference, :request)')->shouldBeCalled()->willReturn($statement);
     $statement->execute([':endpoint' => 'http://example.com', ':method' => 'POST', ':reference' => null, ':request' => 'request'])->shouldBeCalled();
     $connection->lastInsertId()->shouldBeCalled()->willReturn(12);
     $event->setId(12)->shouldBeCalled();
     $this->save($event);
     $this->getLastEvent()->shouldReturn($event);
 }
 function it_returns_last_event(IWriter $writer, IEvent $event)
 {
     $writer->open(Argument::type('string'), 'w+')->shouldBeCalled()->willReturn($writer);
     $event->getId()->shouldBeCalled()->willReturn(null);
     $event->setId(Argument::type('string'))->shouldBeCalled();
     $event->getEndpoint()->shouldBeCalled()->willReturn('file');
     $event->getMethod()->shouldBeCalled()->willReturn('POST');
     $event->getReference()->shouldBeCalled()->willReturn('ref');
     $event->getRequest()->shouldBeCalled()->willReturn('request');
     $writer->write('POST file' . PHP_EOL)->shouldBeCalled();
     $writer->write('ref' . PHP_EOL)->shouldBeCalled();
     $writer->write('request' . PHP_EOL)->shouldBeCalled();
     $writer->isOpen()->shouldBeCalled()->willReturn(true);
     $writer->close()->shouldBeCalled();
     $this->save($event);
     $this->getLastEvent()->shouldreturn($event);
 }
 /**
  * Update event.
  *
  * @param IEvent $event
  *
  * @return bool
  */
 protected function update(IEvent $event)
 {
     $statement = $this->connection->prepare('UPDATE ' . $this->table . ' SET response = :response, SET latency = :latency WHERE id = :id');
     $statement->execute([':id' => $event->getId(), ':response' => $event->getResponse(), ':latency' => $event->getLatency()]);
     return $statement->columnCount() === 1;
 }
 /**
  * @param IEvent $event
  *
  * @return IEvent
  */
 public function save(IEvent $event)
 {
     $this->latestEvent = $event;
     if (null === $event->getId()) {
         $event->setId((string) Uuid::uuid4());
     }
     $filename = sprintf('%s.%s.event', $this->prepareFilename($event->getEndpoint()), $event->getId());
     $file = null;
     try {
         $filePath = $this->directory . '/' . $filename;
         if (!file_exists($filePath)) {
             $this->writer->open($filePath, 'w+');
             $this->writer->write($event->getMethod() . ' ' . $event->getEndpoint() . PHP_EOL);
             $this->writer->write($event->getReference() . PHP_EOL);
             $this->writer->write($event->getRequest() . PHP_EOL);
         } else {
             $this->writer->open($filePath, 'a');
             $this->writer->write($event->getLatency() . PHP_EOL);
             $this->writer->write($event->getResponse() . PHP_EOL);
         }
     } catch (Exception $e) {
         if (null !== $this->logger) {
             $this->logger->error($e);
         }
     } finally {
         if ($this->writer->isOpen()) {
             $this->writer->close();
         }
     }
     return $event;
 }
 function it_saves_events(IEvent $event)
 {
     $event->getId()->shouldBeCalled()->willReturn(null);
     $event->setId(Argument::type('string'))->shouldBeCalled();
     $this->save($event);
 }