function MediaLibraryUpdateViewLangcodeFiltersTest::testMediaLibraryViewStatusExtraFilter

Tests that the langcode filters are added to the media library view.

See also

media_library_post_update_add_langcode_filters()

File

core/modules/media_library/tests/src/Functional/Update/MediaLibraryUpdateViewLangcodeFiltersTest.php, line 31

Class

MediaLibraryUpdateViewLangcodeFiltersTest
Tests the media library module updates for the langcode filters.

Namespace

Drupal\Tests\media_library\Functional\Update

Code

public function testMediaLibraryViewStatusExtraFilter() {
  $config = $this->config('views.view.media_library');
  // We don't have any language filters yet for all displays.
  $this->assertNull($config->get('display.default.display_options.filters.langcode'));
  $this->assertNull($config->get('display.default.display_options.filters.default_langcode'));
  $this->assertNull($config->get('display.widget.display_options.filters.langcode'));
  $this->assertNull($config->get('display.widget.display_options.filters.default_langcode'));
  $this->assertNull($config->get('display.widget_table.display_options.filters.langcode'));
  $this->assertNull($config->get('display.widget_table.display_options.filters.default_langcode'));
  // The rendering language should not be set for the displays.
  $this->assertNull($config->get('display.default.display_options.rendering_language'));
  $this->assertNull($config->get('display.widget.display_options.rendering_language'));
  $this->assertNull($config->get('display.widget_table.display_options.rendering_language'));
  $this->runUpdates();
  $config = $this->config('views.view.media_library');
  // The update should add the langcode filter to the default display only.
  $this->assertNull($config->get('display.widget.display_options.filters.langcode'));
  $this->assertNull($config->get('display.widget_table.display_options.filters.langcode'));
  $default_langcode_filter = $config->get('display.default.display_options.filters.langcode');
  $this->assertInternalType('array', $default_langcode_filter);
  $this->assertSame('langcode', $default_langcode_filter['field']);
  $this->assertSame('media', $default_langcode_filter['entity_type']);
  $this->assertSame('language', $default_langcode_filter['plugin_id']);
  $this->assertSame('langcode', $default_langcode_filter['id']);
  $this->assertTrue($default_langcode_filter['exposed']);
  // The update should add the default_langcode filter to the widget displays
  // only.
  $this->assertNull($config->get('display.default.display_options.filters.default_langcode'));
  foreach ([
    'widget',
    'widget_table',
  ] as $display_id) {
    $filter = $config->get('display.' . $display_id . '.display_options.filters.default_langcode');
    $this->assertInternalType('array', $filter);
    $this->assertSame('default_langcode', $filter['field']);
    $this->assertSame('media', $filter['entity_type']);
    $this->assertSame('boolean', $filter['plugin_id']);
    $this->assertSame('default_langcode', $filter['id']);
    $this->assertFalse($filter['exposed']);
  }
  // The default display should use the default rendering language, which is
  // the language of the content.
  $this->assertNull($config->get('display.default.display_options.rendering_language'));
  // The rendering language of the row should be set to the interface
  // language.
  $this->assertSame('***LANGUAGE_language_interface***', $config->get('display.widget.display_options.rendering_language'));
  $this->assertSame('***LANGUAGE_language_interface***', $config->get('display.widget_table.display_options.rendering_language'));
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.