/** * Tests searchResultToAsset(). * * @covers ::searchResultToAsset * @covers ::loadFromAssetId * * @test */ public function searchResultToAssetReturnsNewAssetWhenNoneExist() { $mock_search_result = ['id' => '123', 'sourcepath' => 'test/123.png', 'filesize' => 123456789, 'name' => '123.png']; $mock_query = $this->getMock('\\Drupal\\Core\\Entity\\Query\\QueryInterface'); $mock_query->expects($this->once())->method('condition')->with('asset_id', $mock_search_result['id']); $mock_query->expects($this->once())->method('execute')->willReturn([]); $mock_asset = $this->getMockBuilder('\\Drupal\\embridge\\EmbridgeAssetEntityInterface')->disableOriginalConstructor()->getMock(); $mock_asset->expects($this->once())->method('setTemporary')->willReturn($this->returnSelf()); $mock_asset->expects($this->once())->method('save'); $expected_mime = 'image/png'; $this->mimeGuesser->expects($this->once())->method('guess')->with($mock_search_result['name'])->willReturn($expected_mime); $expected_values = ['asset_id' => $mock_search_result['id'], 'source_path' => $mock_search_result['sourcepath'], 'filesize' => $mock_search_result['filesize'], 'filename' => $mock_search_result['name'], 'filemime' => $expected_mime, 'catalog_id' => 'testcatalog']; $mock_entity_storage = $this->getMock(EntityStorageInterface::class); $mock_entity_storage->expects($this->once())->method('getQuery')->willReturn($mock_query); $mock_entity_storage->expects($this->once())->method('create')->with($expected_values)->willReturn($mock_asset); $this->entityTypeManager->expects($this->once())->method('getStorage')->with('embridge_asset_entity')->willReturn($mock_entity_storage); $this->assertEquals($mock_asset, $this->emdbHelper->searchResultToAsset($mock_search_result, 'testcatalog')); }
/** * Formats a response from EMDB to be themed into results. * * @param array $search_response * The response. * @param \Drupal\embridge\EnterMediaAssetHelper $asset_helper * A helper service. * @param string $catalog_id * An ID of the catalog to save against temp assets. * * @return array * A renderable array. */ private function formatSearchResults(array $search_response, EnterMediaAssetHelper $asset_helper, $catalog_id) { /** @var \Drupal\Core\Entity\EntityStorageInterface $storage */ $storage = $this->entityTypeManager->getStorage('embridge_catalog'); /** @var \Drupal\embridge\EmbridgeCatalogInterface $catalog */ $catalog = $storage->load($catalog_id); $application_id = $catalog->getApplicationId(); $render_array = []; foreach ($search_response['results'] as $result) { $asset = $asset_helper->searchResultToAsset($result, $catalog_id); $render_array[$asset->id()] = ['#theme' => 'embridge_image', '#asset' => $asset, '#conversion' => 'thumb', '#link_to' => '', '#application_id' => $application_id]; } return $render_array; }