/**
  * @dataProvider addEventEntryProvider
  *
  * @param AbstractEvent $event
  */
 public function testAddEventEntry(AbstractEvent $event)
 {
     $eventLog = EventLog::addEventEntry($event);
     $this->assertInstanceOf(EventLog::class, $eventLog);
     $this->assertNull($eventLog->getId());
     if (null === $event->aggregateRoot) {
         $this->assertNull($eventLog->getAggregateRootId());
         $this->assertNull($eventLog->getAggregateRootType());
     } else {
         $this->assertEquals($event->aggregateRoot->getId(), $eventLog->getAggregateRootId());
         $this->assertEquals(get_class($event->aggregateRoot), $eventLog->getAggregateRootType());
     }
     $this->assertEquals($event->author, $eventLog->getAuthor());
     $this->assertEquals(get_class($event), $eventLog->getEventName());
     $this->assertEquals($event->date, $eventLog->getOccurredAt());
     $this->assertEquals(serialize($event), $eventLog->getMetadata());
 }
 /**
  * @param AbstractEvent $event
  *
  * @return AbstractEvent
  */
 public function logEvent(AbstractEvent $event)
 {
     $eventLog = EventLog::addEventEntry($event);
     return $this->repository->save($eventLog);
 }