You are here

public function FeedLanguageTest::testFeedLanguage in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/aggregator/tests/src/Functional/FeedLanguageTest.php \Drupal\Tests\aggregator\Functional\FeedLanguageTest::testFeedLanguage()

Tests creation of feeds with a language.

File

core/modules/aggregator/tests/src/Functional/FeedLanguageTest.php, line 57

Class

FeedLanguageTest
Tests aggregator feeds in multiple languages.

Namespace

Drupal\Tests\aggregator\Functional

Code

public function testFeedLanguage() {
  $admin_user = $this
    ->drupalCreateUser([
    'administer languages',
    'access administration pages',
    'administer news feeds',
    'access news feeds',
    'create article content',
  ]);
  $this
    ->drupalLogin($admin_user);

  // Enable language selection for feeds.
  $edit['entity_types[aggregator_feed]'] = TRUE;
  $edit['settings[aggregator_feed][aggregator_feed][settings][language][language_alterable]'] = TRUE;
  $this
    ->drupalGet('admin/config/regional/content-language');
  $this
    ->submitForm($edit, 'Save configuration');

  /** @var \Drupal\aggregator\FeedInterface[] $feeds */
  $feeds = [];

  // Create feeds.
  $feeds[1] = $this
    ->createFeed(NULL, [
    'langcode[0][value]' => $this->langcodes[1],
  ]);
  $feeds[2] = $this
    ->createFeed(NULL, [
    'langcode[0][value]' => $this->langcodes[2],
  ]);

  // Make sure that the language has been assigned.
  $this
    ->assertEquals($this->langcodes[1], $feeds[1]
    ->language()
    ->getId());
  $this
    ->assertEquals($this->langcodes[2], $feeds[2]
    ->language()
    ->getId());

  // Create example nodes to create feed items from and then update the feeds.
  $this
    ->createSampleNodes();
  $this
    ->cronRun();

  // Loop over the created feed items and verify that their language matches
  // the one from the feed.
  foreach ($feeds as $feed) {

    /** @var \Drupal\aggregator\ItemInterface[] $items */
    $items = \Drupal::entityTypeManager()
      ->getStorage('aggregator_item')
      ->loadByProperties([
      'fid' => $feed
        ->id(),
    ]);

    // Verify that the feed items were created.
    $this
      ->assertNotEmpty($items);
    foreach ($items as $item) {
      $this
        ->assertEquals($feed
        ->language()
        ->getId(), $item
        ->language()
        ->getId());
    }
  }
}