You are here

public function ImplementHookTest::test in Drupal 7 to 8/9 Module Upgrader 8

File

tests/src/Unit/Plugin/DMU/Fixer/ImplementHookTest.php, line 14

Class

ImplementHookTest
@group DMU.Fixer

Namespace

Drupal\Tests\drupalmoduleupgrader\Unit\Plugin\DMU\Fixer

Code

public function test() {
  eval('function hook_tokens($type, $tokens, array $data = array(), array $options = array()) {}');
  $config = [
    'hook' => 'tokens',
    'module' => 'system',
  ];
  $module_handler = $this
    ->createMock('\\Drupal\\Core\\Extension\\ModuleHandlerInterface');
  $plugin = new ImplementHook($config, uniqid(), [], $module_handler);
  $plugin
    ->setTarget($this->target);
  $plugin
    ->execute();
  $module = $this->target
    ->getPath('.module');
  $function = $this->target
    ->open($module)
    ->children(Filter::isFunction('foo_tokens'))
    ->get(0);
  $this
    ->assertInstanceOf('\\Pharborist\\Functions\\FunctionDeclarationNode', $function);
  $this
    ->assertEquals('foo_tokens', $function
    ->getName()
    ->getText());
  $parameters = $function
    ->getParameters();
  $this
    ->assertCount(4, $parameters);
  $this
    ->assertNull($parameters[0]
    ->getTypeHint());
  $this
    ->assertEquals('type', $parameters[0]
    ->getName());
  $this
    ->assertNull($parameters[0]
    ->getValue());
  $this
    ->assertNull($parameters[1]
    ->getTypeHint());
  $this
    ->assertEquals('tokens', $parameters[1]
    ->getName());
  $this
    ->assertNull($parameters[1]
    ->getValue());
  $this
    ->assertInstanceOf('\\Pharborist\\TokenNode', $parameters[2]
    ->getTypeHint());
  $this
    ->assertSame(T_ARRAY, $parameters[2]
    ->getTypeHint()
    ->getType());
  $this
    ->assertEquals('data', $parameters[2]
    ->getName());
  $this
    ->assertInstanceOf('\\Pharborist\\TokenNode', $parameters[3]
    ->getTypeHint());
  $this
    ->assertSame(T_ARRAY, $parameters[3]
    ->getTypeHint()
    ->getType());
  $this
    ->assertEquals('options', $parameters[3]
    ->getName());
}