3 namespace Drupal\Tests\views\Functional\Plugin;
5 use Drupal\Tests\views\Functional\ViewTestBase;
8 * Tests the OPML feed style plugin.
11 * @see \Drupal\views\Plugin\views\style\Opml
13 class StyleOpmlTest extends ViewTestBase {
16 * Views used by this test.
20 public static $testViews = ['test_style_opml'];
27 public static $modules = ['aggregator'];
32 protected function setUp($import_test_views = TRUE) {
33 parent::setUp($import_test_views);
35 $this->enableViewsTestModule();
37 $admin_user = $this->drupalCreateUser(['administer news feeds']);
38 $this->drupalLogin($admin_user);
42 * Tests the rendered output.
44 public function testOpmlOutput() {
45 // Create a test feed.
47 'title' => $this->randomMachineName(10),
48 'url' => 'http://example.com/rss.xml',
51 $feed = $this->container->get('entity.manager')
52 ->getStorage('aggregator_feed')
56 $this->drupalGet('test-feed-opml-style');
57 $outline = $this->getSession()->getDriver()->find('//outline[1]')[0];
58 $this->assertEquals('rss', $outline->getAttribute('type'));
59 $this->assertEquals($feed->label(), $outline->getAttribute('text'));
60 $this->assertEquals($feed->getUrl(), $outline->getAttribute('xmlUrl'));
62 $view = $this->container->get('entity.manager')
64 ->load('test_style_opml');
65 $display = &$view->getDisplay('feed_1');
66 $display['display_options']['row']['options']['type_field'] = 'link';
67 $display['display_options']['row']['options']['url_field'] = 'url';
70 $this->drupalGet('test-feed-opml-style');
71 $outline = $this->getSession()->getDriver()->find('//outline[1]')[0];
72 $this->assertEquals('link', $outline->getAttribute('type'));
73 $this->assertEquals($feed->label(), $outline->getAttribute('text'));
74 $this->assertEquals($feed->getUrl(), $outline->getAttribute('url'));
75 // xmlUrl should not be present when type is link.
76 $this->assertNull($outline->getAttribute('xmlUrl'));