You are here

public function ActionUnitTest::testOperations in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 core/modules/system/src/Tests/Action/ActionUnitTest.php \Drupal\system\Tests\Action\ActionUnitTest::testOperations()

Tests the functionality of test actions.

File

core/modules/system/src/Tests/Action/ActionUnitTest.php, line 47
Contains \Drupal\system\Tests\Action\ActionUnitTest.

Class

ActionUnitTest
Tests action plugins.

Namespace

Drupal\system\Tests\Action

Code

public function testOperations() {

  // Test that actions can be discovered.
  $definitions = $this->actionManager
    ->getDefinitions();
  $this
    ->assertTrue(count($definitions) > 1, 'Action definitions are found.');
  $this
    ->assertTrue(!empty($definitions['action_test_no_type']), 'The test action is among the definitions found.');
  $definition = $this->actionManager
    ->getDefinition('action_test_no_type');
  $this
    ->assertTrue(!empty($definition), 'The test action definition is found.');
  $definitions = $this->actionManager
    ->getDefinitionsByType('user');
  $this
    ->assertTrue(empty($definitions['action_test_no_type']), 'An action with no type is not found.');

  // Create an instance of the 'save entity' action.
  $action = $this->actionManager
    ->createInstance('action_test_save_entity');
  $this
    ->assertTrue($action instanceof ActionInterface, 'The action implements the correct interface.');

  // Create a new unsaved user.
  $name = $this
    ->randomMachineName();
  $user_storage = $this->container
    ->get('entity.manager')
    ->getStorage('user');
  $account = $user_storage
    ->create(array(
    'name' => $name,
    'bundle' => 'user',
  ));
  $loaded_accounts = $user_storage
    ->loadMultiple();
  $this
    ->assertEqual(count($loaded_accounts), 0);

  // Execute the 'save entity' action.
  $action
    ->execute($account);
  $loaded_accounts = $user_storage
    ->loadMultiple();
  $this
    ->assertEqual(count($loaded_accounts), 1);
  $account = reset($loaded_accounts);
  $this
    ->assertEqual($name, $account
    ->label());
}