Пример #1
0
 /**
  * Tests basic aggregator_item view.
  */
 public function testAggregatorItemView()
 {
     /** @var \Drupal\Core\Render\RendererInterface $renderer */
     $renderer = \Drupal::service('renderer');
     $feed = $this->feedStorage->create(array('title' => $this->randomMachineName(), 'url' => 'https://www.drupal.org/', 'refresh' => 900, 'checked' => 123543535, 'description' => $this->randomMachineName()));
     $feed->save();
     $items = array();
     $expected = array();
     for ($i = 0; $i < 10; $i++) {
         $values = array();
         $values['fid'] = $feed->id();
         $values['timestamp'] = mt_rand(REQUEST_TIME - 10, REQUEST_TIME + 10);
         $values['title'] = $this->randomMachineName();
         $values['description'] = $this->randomMachineName();
         // Add a image to ensure that the sanitizing can be tested below.
         $values['author'] = $this->randomMachineName() . '<img src="http://example.com/example.png" \\>"';
         $values['link'] = 'https://www.drupal.org/node/' . mt_rand(1000, 10000);
         $values['guid'] = $this->randomString();
         $aggregator_item = $this->itemStorage->create($values);
         $aggregator_item->save();
         $items[$aggregator_item->id()] = $aggregator_item;
         $values['iid'] = $aggregator_item->id();
         $expected[] = $values;
     }
     $view = Views::getView('test_aggregator_items');
     $this->executeView($view);
     $column_map = array('iid' => 'iid', 'title' => 'title', 'aggregator_item_timestamp' => 'timestamp', 'description' => 'description', 'aggregator_item_author' => 'author');
     $this->assertIdenticalResultset($view, $expected, $column_map);
     // Ensure that the rendering of the linked title works as expected.
     foreach ($view->result as $row) {
         $iid = $view->field['iid']->getValue($row);
         $expected_link = \Drupal::l($items[$iid]->getTitle(), Url::fromUri($items[$iid]->getLink(), ['absolute' => TRUE]));
         $output = $renderer->executeInRenderContext(new RenderContext(), function () use($view, $row) {
             return $view->field['title']->advancedRender($row);
         });
         $this->assertEqual($output, $expected_link->getGeneratedLink(), 'Ensure the right link is generated');
         $expected_author = Xss::filter($items[$iid]->getAuthor(), _aggregator_allowed_tags());
         $output = $renderer->executeInRenderContext(new RenderContext(), function () use($view, $row) {
             return $view->field['author']->advancedRender($row);
         });
         $this->assertEqual($output, $expected_author, 'Ensure the author got filtered');
         $expected_description = Xss::filter($items[$iid]->getDescription(), _aggregator_allowed_tags());
         $output = $renderer->executeInRenderContext(new RenderContext(), function () use($view, $row) {
             return $view->field['description']->advancedRender($row);
         });
         $this->assertEqual($output, $expected_description, 'Ensure the author got filtered');
     }
 }
 /**
  * Tests basic aggregator_item view.
  */
 public function testAggregatorItemView()
 {
     $feed = $this->feedStorage->create(array('title' => $this->randomMachineName(), 'url' => 'http://drupal.org/', 'refresh' => 900, 'checked' => 123543535, 'description' => $this->randomMachineName()));
     $feed->save();
     $items = array();
     $expected = array();
     for ($i = 0; $i < 10; $i++) {
         $values = array();
         $values['fid'] = $feed->id();
         $values['timestamp'] = mt_rand(REQUEST_TIME - 10, REQUEST_TIME + 10);
         $values['title'] = $this->randomMachineName();
         $values['description'] = $this->randomMachineName();
         // Add a image to ensure that the sanitizing can be tested below.
         $values['author'] = $this->randomMachineName() . '<img src="http://example.com/example.png" \\>"';
         $values['link'] = 'http://drupal.org/node/' . mt_rand(1000, 10000);
         $values['guid'] = $this->randomString();
         $aggregator_item = $this->itemStorage->create($values);
         $aggregator_item->save();
         $items[$aggregator_item->id()] = $aggregator_item;
         $values['iid'] = $aggregator_item->id();
         $expected[] = $values;
     }
     $view = Views::getView('test_aggregator_items');
     $this->executeView($view);
     $column_map = array('iid' => 'iid', 'aggregator_item_title' => 'title', 'aggregator_item_timestamp' => 'timestamp', 'aggregator_item_description' => 'description', 'aggregator_item_author' => 'author');
     $this->assertIdenticalResultset($view, $expected, $column_map);
     // Ensure that the rendering of the linked title works as expected.
     foreach ($view->result as $row) {
         $iid = $view->field['iid']->getValue($row);
         $expected_link = _l($items[$iid]->getTitle(), $items[$iid]->getLink(), array('absolute' => TRUE));
         $this->assertEqual($view->field['title']->advancedRender($row), $expected_link, 'Ensure the right link is generated');
         $expected_author = aggregator_filter_xss($items[$iid]->getAuthor());
         $this->assertEqual($view->field['author']->advancedRender($row), $expected_author, 'Ensure the author got filtered');
         $expected_description = aggregator_filter_xss($items[$iid]->getDescription());
         $this->assertEqual($view->field['description']->advancedRender($row), $expected_description, 'Ensure the author got filtered');
     }
 }