Upgraded drupal core with security updates
[yaffs-website] / web / core / modules / aggregator / tests / src / Functional / FeedLanguageTest.php
1 <?php
2
3 namespace Drupal\Tests\aggregator\Functional;
4
5 use Drupal\language\Entity\ConfigurableLanguage;
6 use Drupal\Tests\Traits\Core\CronRunTrait;
7
8 /**
9  * Tests aggregator feeds in multiple languages.
10  *
11  * @group aggregator
12  */
13 class FeedLanguageTest extends AggregatorTestBase {
14
15   use CronRunTrait;
16
17   /**
18    * Modules to install.
19    *
20    * @var array
21    */
22   public static $modules = ['language'];
23
24   /**
25    * List of langcodes.
26    *
27    * @var string[]
28    */
29   protected $langcodes = [];
30
31   /**
32    * {@inheritdoc}
33    */
34   protected function setUp() {
35     parent::setUp();
36
37     // Create test languages.
38     $this->langcodes = [ConfigurableLanguage::load('en')];
39     for ($i = 1; $i < 3; ++$i) {
40       $language = ConfigurableLanguage::create([
41         'id' => 'l' . $i,
42         'label' => $this->randomString(),
43       ]);
44       $language->save();
45       $this->langcodes[$i] = $language->id();
46     }
47   }
48
49   /**
50    * Tests creation of feeds with a language.
51    */
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);
55
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;
59
60     $this->drupalPostForm('admin/config/regional/content-language', $edit, t('Save configuration'));
61
62     /** @var \Drupal\aggregator\FeedInterface[] $feeds */
63     $feeds = [];
64     // Create 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]]);
67
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]);
71
72     // Create example nodes to create feed items from and then update the feeds.
73     $this->createSampleNodes();
74     $this->cronRun();
75
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());
84       }
85     }
86   }
87
88 }