/** * @test */ public function addTag() { $asset = $this->buildAssetObject(); $tag = new Tag('test'); $this->tagRepository->add($tag); $asset->addTag($tag); $this->persistenceManager->persistAll(); $this->persistenceManager->clearState(); $asset = $this->assetRepository->findAll()->getFirst(); $this->assertAssetHasTags($asset, ['test']); }
/** * @test */ public function findBySearchTermReturnsFilteredResult() { $tag1 = new Tag('foobar'); $tag2 = new Tag('foo bar'); $tag3 = new Tag('bar foo bar'); $this->tagRepository->add($tag1); $this->tagRepository->add($tag2); $this->tagRepository->add($tag3); $this->persistenceManager->persistAll(); $this->persistenceManager->clearState(); $this->assertCount(3, $this->tagRepository->findBySearchTerm('foo')); $this->assertCount(2, $this->tagRepository->findBySearchTerm('foo bar')); $this->assertCount(1, $this->tagRepository->findBySearchTerm(' foo ')); }
/** * @test */ public function findBySearchTermAndTagsReturnsFilteredResult() { $tag = new Tag('home'); $this->tagRepository->add($tag); $resource1 = $this->resourceManager->importResource(__DIR__ . '/../../Fixtures/Resources/license.txt'); $resource2 = $this->resourceManager->importResource(__DIR__ . '/../../Fixtures/Resources/417px-Mihaly_Csikszentmihalyi.jpg'); $asset1 = new Asset($resource1); $asset1->setTitle('asset for homepage'); $asset2 = new Asset($resource2); $asset2->setTitle('just another asset'); $asset2->addTag($tag); $this->assetRepository->add($asset1); $this->assetRepository->add($asset2); $this->persistenceManager->persistAll(); $this->persistenceManager->clearState(); $this->assertCount(2, $this->assetRepository->findBySearchTermOrTags('home', array($tag))); $this->assertCount(2, $this->assetRepository->findBySearchTermOrTags('homepage', array($tag))); $this->assertCount(1, $this->assetRepository->findBySearchTermOrTags('baz', array($tag))); // This is necessary to initialize all resource instances before the tables are deleted foreach ($this->assetRepository->findAll() as $asset) { $asset->getResource()->getSha1(); } }
/** * Shows a list of assets * * @param string $searchTerm An optional search term used for filtering the list of assets * @return string */ public function indexAction($searchTerm = '') { $assets = $this->assetRepository->findBySearchTermOrTags($searchTerm, $this->tagRepository->findBySearchTerm($searchTerm)->toArray()); $this->view->assign('assets', $assets); }
/** * @param AssetCollection $assetCollection * @return void */ public function editAssetCollectionAction(AssetCollection $assetCollection) { $this->view->assignMultiple(array('assetCollection' => $assetCollection, 'tags' => $this->tagRepository->findAll())); }