FeedLanguageTest.php

Same filename and directory in other branches
  1. 8.9.x core/modules/aggregator/tests/src/Functional/FeedLanguageTest.php

Namespace

Drupal\Tests\aggregator\Functional

File

core/modules/aggregator/tests/src/Functional/FeedLanguageTest.php

View source
<?php

namespace Drupal\Tests\aggregator\Functional;

use Drupal\language\Entity\ConfigurableLanguage;
use Drupal\Tests\Traits\Core\CronRunTrait;

/**
 * Tests aggregator feeds in multiple languages.
 *
 * @group aggregator
 * @group legacy
 */
class FeedLanguageTest extends AggregatorTestBase {
    use CronRunTrait;
    
    /**
     * Modules to install.
     *
     * @var array
     */
    protected static $modules = [
        'language',
    ];
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * List of langcodes.
     *
     * @var string[]
     */
    protected $langcodes = [];
    
    /**
     * {@inheritdoc}
     */
    protected function setUp() : void {
        parent::setUp();
        // Create test languages.
        $this->langcodes = [
            ConfigurableLanguage::load('en'),
        ];
        for ($i = 1; $i < 3; ++$i) {
            $language = ConfigurableLanguage::create([
                'id' => 'l' . $i,
                'label' => $this->randomString(),
            ]);
            $language->save();
            $this->langcodes[$i] = $language->id();
        }
    }
    
    /**
     * Tests creation of feeds with a language.
     */
    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());
            }
        }
    }

}

Classes

Title Deprecated Summary
FeedLanguageTest Tests aggregator feeds in multiple languages.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.