/**
  * @test
  */
 public function ifPersistenceEventReturnsCorrectObjects()
 {
     $document = $this->getMock('Simgroep\\ConcurrentSpiderBundle\\PersistableDocument');
     $resource = $this->getMockBuilder('VDB\\Spider\\Resource')->disableOriginalConstructor()->getMock();
     $metadata = ['core' => 'dummyCore'];
     $event = new PersistenceEvent($document, $resource, $metadata);
     $this->assertEquals($document, $event->getDocument());
     $this->assertEquals($resource, $event->getResource());
     $this->assertEquals($metadata, $event->getMetadata());
 }
 /**
  * Calculates what the desired revisit factor should be.
  *
  * @param \Simgroep\ConcurrentSpiderBundle\PersistenceEvent $event
  */
 public function onPrePersistDocument(PersistenceEvent $event)
 {
     $newDocument = $event->getDocument();
     $currentDocument = $this->indexer->findDocumentByUrl($newDocument['url'], $event->getMetadata());
     if (null === $currentDocument || $currentDocument['revisit_after'] == 0) {
         $newDocument['revisit_after'] = $this->defaultRevisitFactor;
         $expireDate = new DateTime();
         $expireDate->modify(sprintf('+%s minute', $newDocument['revisit_after']));
         $newDocument['revisit_expiration'] = $expireDate->format('Y-m-d\\TH:i:s\\Z');
         return;
     }
     if ($this->createDocumentChecksum($currentDocument) === $this->createDocumentChecksum($newDocument)) {
         $this->increaseRevisitFactor($newDocument, $currentDocument['revisit_after']);
     } else {
         $this->decreaseRevisitFactor($newDocument, $currentDocument['revisit_after']);
     }
 }