You are here

public function UpdateActionsWithEntityPluginsTest::testUpdateActionsWithEntityPlugins in Drupal 8

Tests upgrading comment and node actions to generic entity ones.

See also

system_post_update_change_action_plugins()

File

core/modules/system/tests/src/Functional/Update/UpdateActionsWithEntityPluginsTest.php, line 33

Class

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

Namespace

Drupal\Tests\system\Functional\Update

Code

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());
  }
}