acquia_dam-1.0.0-rc1/tests/src/Kernel/ViewsIntegrationTest.php
tests/src/Kernel/ViewsIntegrationTest.php
<?php declare(strict_types=1); namespace Drupal\Tests\acquia_dam\Kernel; use Drupal\acquia_dam\Plugin\views\filter\AssetMetadataInOperator; use Drupal\acquia_dam\Plugin\views\filter\AssetMetadataString; use Drupal\Core\Form\FormState; use Drupal\media\MediaInterface; use Drupal\views\Views; use Drupal\views_remote_data\Plugin\views\query\RemoteDataQuery; /** * Views integration tests. * * @group acquia_dam */ final class ViewsIntegrationTest extends AcquiaDamKernelTestBase { /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); $this->installConfig([ 'media', 'media_library', 'acquia_dam', ]); } /** * Tests the view provided for the media library. */ public function testMediaLibraryView(): void { $this->drupalSetUpCurrentUser(); $view = Views::getView('acquia_dam_asset_library'); self::assertNotNull($view); $view->setDisplay('default'); $view->executeDisplay('default', ['pdf']); self::assertCount(2, $view->result); $result = $view->result[0]; self::assertIsObject($result); self::assertTrue(property_exists($result, 'asset')); self::assertEquals('pdf', $result->asset['file_properties']['format_type']); self::assertNotNull($result->_entity); self::assertInstanceOf(MediaInterface::class, $result->_entity); self::assertEquals($result->id, $result->_entity->id()); } /** * Tests the search provided for the media library. */ public function testMediaLibrarySearch(): void { $this->drupalSetUpCurrentUser(); $view = Views::getView('acquia_dam_asset_library'); self::assertNotNull($view); $view->setDisplay(); $filters = $view->getDisplay()->getOption('filters'); $filters['search']['value'] = 'Explorer'; $view->display_handler->overrideOption('filters', $filters); $view->setDisplay(); $view->preExecute(['pdf']); $view->execute(); self::assertCount(1, $view->result); } /** * Tests the selection_list metadata filter. */ public function testMediaLibrarySelectListFilter(): void { $this->setDamSiteToken(); $this->setUpCurrentUser(); $view = Views::getView('acquia_dam_asset_library'); self::assertNotNull($view); $view->initDisplay(); $query = $view->getQuery(); self::assertInstanceOf(RemoteDataQuery::class, $query); $filter_instance = $this->container ->get('plugin.manager.views.filter') ->createInstance('asset_metadata_in_operator'); self::assertInstanceOf(AssetMetadataInOperator::class, $filter_instance); $filter_options = [ 'display_key' => 'assettype', 'filter_operation' => 'in', 'group' => 1, ]; $filter_instance->init( $view, $view->getDisplay(), $filter_options ); $form = []; $filter_instance->buildOptionsForm($form, new FormState()); self::assertEquals([ 'assettype' => 'Asset Type', 'containsFnords' => 'Contains Fnords', ], $form['display_key']['#options']); $filter_instance->getValueOptions(); self::assertEquals([ 'Document' => 'Document', 'Graphic' => 'Graphic', 'Image' => 'Image', 'Other' => 'Other', 'Video' => 'Video', ], $filter_instance->getValueOptions()); $filter_instance->value = 'Document'; $filter_instance->query(); self::assertCount(1, $query->where); $group = reset($query->where); self::assertArrayHasKey('conditions', $group); $conditions = $group['conditions']; self::assertCount(1, $conditions); self::assertEquals([ [ 'field' => ['assettype'], 'value' => 'Document', 'operator' => 'in', ], ], $conditions, var_export($conditions[0], TRUE)); } /** * Tests the text, tex_short, text_long metadata filter. */ public function testMediaLibraryTextFilter(): void { $this->setDamSiteToken(); $this->setUpCurrentUser(); $view = Views::getView('acquia_dam_asset_library'); self::assertNotNull($view); $view->initDisplay(); $query = $view->getQuery(); self::assertInstanceOf(RemoteDataQuery::class, $query); $filter_instance = $this->container ->get('plugin.manager.views.filter') ->createInstance('asset_metadata_string'); self::assertInstanceOf(AssetMetadataString::class, $filter_instance); $filter_options = [ 'display_key' => 'keywords', 'operator' => '=', 'group' => 1, ]; $filter_instance->init( $view, $view->getDisplay(), $filter_options ); $form = []; $filter_instance->buildOptionsForm($form, new FormState()); self::assertEquals([ 'author' => 'Author', 'byline' => 'By-line', 'keywords' => 'Keywords', 'description' => 'Description', 'longtext' => 'Long text', ], $form['display_key']['#options']); $filter_instance->value = 'foobar'; $filter_instance->query(); self::assertCount(1, $query->where); $group = reset($query->where); self::assertArrayHasKey('conditions', $group); $conditions = $group['conditions']; self::assertCount(1, $conditions); self::assertEquals([ [ 'field' => ['keywords'], 'value' => 'foobar', 'operator' => '=', ], ], $conditions, var_export($conditions[0], TRUE)); } }