3 namespace Drupal\Tests\aggregator\Functional;
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\Tests\Traits\Core\CronRunTrait;
9 * Tests aggregator feeds in multiple languages.
13 class FeedLanguageTest extends AggregatorTestBase {
22 public static $modules = ['language'];
29 protected $langcodes = [];
34 protected function setUp() {
37 // Create test languages.
38 $this->langcodes = [ConfigurableLanguage::load('en')];
39 for ($i = 1; $i < 3; ++$i) {
40 $language = ConfigurableLanguage::create([
42 'label' => $this->randomString(),
45 $this->langcodes[$i] = $language->id();
50 * Tests creation of feeds with a language.
52 public function testFeedLanguage() {
53 $admin_user = $this->drupalCreateUser(['administer languages', 'access administration pages', 'administer news feeds', 'access news feeds', 'create article content']);
54 $this->drupalLogin($admin_user);
56 // Enable language selection for feeds.
57 $edit['entity_types[aggregator_feed]'] = TRUE;
58 $edit['settings[aggregator_feed][aggregator_feed][settings][language][language_alterable]'] = TRUE;
60 $this->drupalPostForm('admin/config/regional/content-language', $edit, t('Save configuration'));
62 /** @var \Drupal\aggregator\FeedInterface[] $feeds */
65 $feeds[1] = $this->createFeed(NULL, ['langcode[0][value]' => $this->langcodes[1]]);
66 $feeds[2] = $this->createFeed(NULL, ['langcode[0][value]' => $this->langcodes[2]]);
68 // Make sure that the language has been assigned.
69 $this->assertEqual($feeds[1]->language()->getId(), $this->langcodes[1]);
70 $this->assertEqual($feeds[2]->language()->getId(), $this->langcodes[2]);
72 // Create example nodes to create feed items from and then update the feeds.
73 $this->createSampleNodes();
76 // Loop over the created feed items and verify that their language matches
77 // the one from the feed.
78 foreach ($feeds as $feed) {
79 /** @var \Drupal\aggregator\ItemInterface[] $items */
80 $items = entity_load_multiple_by_properties('aggregator_item', ['fid' => $feed->id()]);
81 $this->assertTrue(count($items) > 0, 'Feed items were created.');
82 foreach ($items as $item) {
83 $this->assertEqual($item->language()->getId(), $feed->language()->getId());