/** * @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; }
/** * 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); }
/** * Insert new event. * * @param IEvent $event * * @return int */ protected function insert(IEvent $event) { $statement = $this->connection->prepare('INSERT INTO ' . $this->table . ' VALUES(:endpoint, :method, :reference, :request)'); $statement->execute([':endpoint' => $event->getEndpoint(), ':method' => $event->getMethod(), ':reference' => $event->getReference(), ':request' => $event->getRequest()]); $id = $this->connection->lastInsertId(); $event->setId($id); return $id; }
function it_saves_events(IEvent $event) { $event->getId()->shouldBeCalled()->willReturn(null); $event->setId(Argument::type('string'))->shouldBeCalled(); $this->save($event); }