protected function DisplayFeedTranslationTest::checkFeedResults in Drupal 8
Same name and namespace in other branches
- 9 core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php \Drupal\Tests\views\Functional\Plugin\DisplayFeedTranslationTest::checkFeedResults()
- 10 core/modules/views/tests/src/Functional/Plugin/DisplayFeedTranslationTest.php \Drupal\Tests\views\Functional\Plugin\DisplayFeedTranslationTest::checkFeedResults()
Checks the feed results for the given style of node links.
Parameters
string $link_style: What style of links do we expect? Either 'raw-node-path' or 'path-alias'. Only used for human-readable assert failure messages.
\Drupal\node\Entity\Node $node: The node entity that's been created.
1 call to DisplayFeedTranslationTest::checkFeedResults()
- DisplayFeedTranslationTest::testFeedFieldOutput in core/
modules/ views/ tests/ src/ Functional/ Plugin/ DisplayFeedTranslationTest.php - Tests the rendered output for fields display with multiple translations.
File
- core/
modules/ views/ tests/ src/ Functional/ Plugin/ DisplayFeedTranslationTest.php, line 135
Class
- DisplayFeedTranslationTest
- Tests the feed display plugin with translated content.
Namespace
Drupal\Tests\views\Functional\PluginCode
protected function checkFeedResults($link_style, Node $node) {
/** @var \Drupal\Core\Language\LanguageManagerInterface $languageManager */
$language_manager = \Drupal::languageManager()
->reset();
$node_links = [];
$node_links['en'] = $node
->toUrl()
->setAbsolute()
->toString();
foreach ($this->langcodes as $langcode) {
$node_links[$langcode] = $node
->toUrl()
->setOption('language', $language_manager
->getLanguage($langcode))
->setAbsolute()
->toString();
}
$expected = [
'pt-br' => [
'description' => '<p>Algo em Português</p>',
],
'es' => [
'description' => '<p>Algo en Español</p>',
],
'en' => [
'description' => '<p>Something in English.</p>',
],
];
foreach ($node_links as $langcode => $link) {
$expected[$langcode]['link'] = $link;
}
$this
->drupalGet('test-feed-display-fields.xml');
$this
->assertSession()
->statusCodeEquals(200);
$items = $this
->getSession()
->getDriver()
->find('//channel/item');
// There should only be 3 items in the feed.
$this
->assertCount(3, $items, "{$link_style}: 3 items in feed");
// Don't rely on the sort order of the items in the feed. Instead, each
// item's title is the langcode for that item. Iterate over all the items,
// get the title text for each one, make sure we're expecting each langcode
// we find, and then assert that the rest of the content of that item is
// what we expect for the given langcode.
foreach ($items as $item) {
$title_element = $item
->findAll('xpath', 'title');
$this
->assertCount(1, $title_element, "{$link_style}: Missing title element");
$langcode = $title_element[0]
->getText();
$this
->assertArrayHasKey($langcode, $expected, "{$link_style}: Missing expected output for {$langcode}");
foreach ($expected[$langcode] as $key => $expected_value) {
$elements = $item
->findAll('xpath', $key);
$this
->assertCount(1, $elements, "{$link_style}: Xpath {$key} missing");
$this
->assertEquals($expected_value, $elements[0]
->getText(), "{$link_style}: Unexpected value for {$key}");
}
}
}