/** * * * @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); }