/**
  *
  *
  * @param \Cv\Entity\Cv $document
  *
  * @return array|\Core\Entity\PermissionsAwareInterface[]
  */
 protected function getFiles($document)
 {
     $files = parent::getFiles($document);
     if ($document->notEmpty('contact') && ($image = $document->getContact()->getImage())) {
         $files[] = $image;
     }
     return $files;
 }
 public function testUpdatesFilesPermissionsOnFlush()
 {
     /*
      * Prepare
      */
     $permissions = $this->getMockBuilder(Permissions::class)->setMethods(['hasChanged'])->getMock();
     $permissions->expects($this->exactly(2))->method('hasChanged')->willReturn(true);
     $document = new Ufps_TargetDocument();
     $document->setPermissions($permissions);
     $filePermissions = $this->getMockBuilder(Permissions::class)->setMethods(['clear', 'inherit'])->getMock();
     $file = new FileEntity();
     $file->setPermissions($filePermissions);
     $collection = new ArrayCollection();
     $collection->add($file);
     $document->singleFile = $file;
     $document->fileCollection = $collection;
     $inserts = [$document];
     $updates = [$document];
     $filePermissions->expects($this->exactly(4))->method('clear')->will($this->returnSelf());
     $filePermissions->expects($this->exactly(4))->method('inherit')->with($permissions)->will($this->returnSelf());
     $dm = $this->getMockBuilder(DocumentManager::class)->setMethods(['getUnitOfWork', 'getClassMetadata', 'persist'])->disableOriginalConstructor()->getMock();
     $uow = $this->getMockBuilder(UnitOfWork::class)->setMethods(['computeChangeSet', 'getScheduledDocumentInsertions', 'getScheduledDocumentUpdates'])->disableOriginalConstructor()->getMock();
     $args = $this->getMockBuilder(OnFlushEventArgs::class)->setMethods(['getDocumentManager'])->disableOriginalConstructor()->getMock();
     $args->expects($this->once())->method('getDocumentManager')->willReturn($dm);
     $metaData = $this->getMockBuilder('Doctrine\\ODM\\MongoDB\\Mapping\\ClassMetadata')->disableOriginalConstructor()->getMock();
     $dm->expects($this->once())->method('getUnitOfWork')->willReturn($uow);
     $dm->expects($this->exactly(4))->method('getClassMetaData')->with(FileEntity::class)->willReturn($metaData);
     $dm->expects($this->exactly(2))->method('persist')->with($this->identicalTo($filePermissions));
     $uow->expects($this->once())->method('getScheduledDocumentInsertions')->willReturn($inserts);
     $uow->expects($this->once())->method('getScheduledDocumentUpdates')->willReturn($updates);
     $uow->expects($this->exactly(4))->method('computeChangeSet')->with($metaData, $file);
     /*
      * Execute
      */
     $this->target->onFlush($args);
 }