UpdateActionsWithEntityPluginsTest.php

Namespace

Drupal\Tests\system\Functional\Update

File

core/modules/system/tests/src/Functional/Update/UpdateActionsWithEntityPluginsTest.php

View source
<?php

namespace Drupal\Tests\system\Functional\Update;

use Drupal\FunctionalTests\Update\UpdatePathTestBase;
use Drupal\system\Entity\Action;

/**
 * Tests upgrading comment and node actions to generic entity ones.
 *
 * @group Update
 * @group legacy
 */
class UpdateActionsWithEntityPluginsTest extends UpdatePathTestBase {
    
    /**
     * {@inheritdoc}
     */
    protected $defaultTheme = 'stark';
    
    /**
     * {@inheritdoc}
     */
    protected function setDatabaseDumpFiles() {
        $this->databaseDumpFiles = [
            __DIR__ . '/../../../../tests/fixtures/update/drupal-8.bare.standard.php.gz',
        ];
    }
    
    /**
     * Tests upgrading comment and node actions to generic entity ones.
     *
     * @see system_post_update_change_action_plugins()
     */
    public function testUpdateActionsWithEntityPlugins() {
        $old_new_action_id_map = [
            'comment_publish_action' => [
                'comment_publish_action',
                'entity:publish_action:comment',
            ],
            'comment_unpublish_action' => [
                'comment_unpublish_action',
                'entity:unpublish_action:comment',
            ],
            'comment_save_action' => [
                'comment_save_action',
                'entity:save_action:comment',
            ],
            'node_publish_action' => [
                'node_publish_action',
                'entity:publish_action:node',
            ],
            'node_unpublish_action' => [
                'node_unpublish_action',
                'entity:unpublish_action:node',
            ],
            'node_save_action' => [
                'node_save_action',
                'entity:save_action:node',
            ],
        ];
        foreach ($old_new_action_id_map as $key => list($before, $after)) {
            $config = \Drupal::configFactory()->get('system.action.' . $key);
            $this->assertSame($before, $config->get('plugin'));
        }
        $this->runUpdates();
        foreach ($old_new_action_id_map as $key => list($before, $after)) {
            
            /** @var \Drupal\system\Entity\Action $action */
            $action = Action::load($key);
            $this->assertSame($after, $action->getPlugin()
                ->getPluginId());
            $config = \Drupal::configFactory()->get('system.action.' . $key);
            $this->assertSame($after, $config->get('plugin'));
            // Check that the type the action is based on will be a module dependency.
            $this->assertArraySubset([
                'module' => [
                    $action->getPluginDefinition()['type'],
                ],
            ], $action->getDependencies());
        }
    }
    
    /**
     * Tests upgrading comment and node delete actions to generic entity ones.
     *
     * @see system_post_update_change_delete_action_plugins()
     */
    public function testUpdateDeleteActionsWithEntityPlugins() {
        // comment_delete_actions is not part of the dump files.
        $array = [
            'node_delete_action' => [
                'node_delete_action',
                'entity:delete_action:node',
            ],
        ];
        foreach ($array as $key => list($before, $after)) {
            
            /** @var \Drupal\system\Entity\Action $action */
            $action = Action::load($key);
            $this->assertSame($before, $action->getPlugin()
                ->getPluginId());
        }
        $this->runUpdates();
        foreach ($array as $key => list($before, $after)) {
            
            /** @var \Drupal\system\Entity\Action $action */
            $action = Action::load($key);
            $this->assertSame($after, $action->getPlugin()
                ->getPluginId());
            // Check that the type the action is based on will be a module dependency.
            $this->assertArraySubset([
                'module' => [
                    $action->getPluginDefinition()['type'],
                ],
            ], $action->getDependencies());
        }
    }

}

Classes

Title Deprecated Summary
UpdateActionsWithEntityPluginsTest Tests upgrading comment and node actions to generic entity ones.

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