function DisplayOpmlFeedTest::checkFeedViewUi

Checks views UI for a specific feed view.

Parameters

string $view_name: The view name to check against.

1 call to DisplayOpmlFeedTest::checkFeedViewUi()
DisplayOpmlFeedTest::testFeedUI in core/modules/aggregator/tests/src/Functional/views_ui/DisplayOpmlFeedTest.php
Tests feed display admin UI.

File

core/modules/aggregator/tests/src/Functional/views_ui/DisplayOpmlFeedTest.php, line 62

Class

DisplayOpmlFeedTest
Tests the views UI for feed display plugin.

Namespace

Drupal\Tests\aggregator\Functional\views_ui

Code

protected function checkFeedViewUi($view_name) {
    $this->drupalGet('admin/structure/views');
    // Verify that the page lists the $view_name view.
    // Regression test: ViewListBuilder::getDisplayPaths() did not properly
    // check whether a DisplayPluginCollection was returned in iterating over
    // all displays.
    $this->assertSession()
        ->pageTextContains($view_name);
    // Check the attach TO interface.
    $this->drupalGet('admin/structure/views/nojs/display/' . $view_name . '/feed_1/displays');
    // Display labels should be escaped.
    $this->assertSession()
        ->assertEscaped('<em>Page</em>');
    // Load all the options of the checkbox.
    $result = $this->xpath('//div[@id="edit-displays"]/div');
    $options = [];
    foreach ($result as $item) {
        $input_node = $item->find('css', 'input');
        if ($input_node->hasAttribute('value')) {
            $options[] = $input_node->getAttribute('value');
        }
    }
    $this->assertEquals([
        'default',
        'page',
    ], $options, 'Make sure all displays appears as expected.');
    // Post and save this and check the output.
    $this->drupalGet('admin/structure/views/nojs/display/' . $view_name . '/feed_1/displays');
    $this->submitForm([
        'displays[page]' => 'page',
    ], 'Apply');
    // Options summary should be escaped.
    $this->assertSession()
        ->assertEscaped('<em>Page</em>');
    $this->assertSession()
        ->responseNotContains('<em>Page</em>');
    $this->drupalGet('admin/structure/views/view/' . $view_name . '/edit/feed_1');
    $this->assertSession()
        ->elementTextContains('xpath', '//*[@id="views-feed-1-displays"]', 'Page');
    // Add the default display, so there should now be multiple displays.
    $this->drupalGet('admin/structure/views/nojs/display/' . $view_name . '/feed_1/displays');
    $this->submitForm([
        'displays[default]' => 'default',
    ], 'Apply');
    $this->drupalGet('admin/structure/views/view/' . $view_name . '/edit/feed_1');
    $this->assertSession()
        ->elementTextContains('xpath', '//*[@id="views-feed-1-displays"]', 'Multiple displays');
}

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