function HookAlterOrderTest::testAlterOrder

Test ordering alter calls.

File

core/tests/Drupal/KernelTests/Core/Hook/HookAlterOrderTest.php, line 154

Class

HookAlterOrderTest
Tests Hook Alter Order.

Namespace

Drupal\KernelTests\Core\Hook

Code

public function testAlterOrder() : void {
  $this->assertAlterCallOrder([
    CAlterHooks::class . '::testAlter',
    AAlterHooks::class . '::testAlterAfterC',
    DAlterHooks::class . '::testAlter',
  ], 'test');
  $this->assertAlterCallOrder([
    AAlterHooks::class . '::testSubtypeAlter',
    BAlterHooks::class . '::testSubtypeAlter',
    CAlterHooks::class . '::testSubtypeAlter',
    DAlterHooks::class . '::testSubtypeAlter',
  ], 'test_subtype');
  $this->assertAlterCallOrder([
    // The implementation from 'D' is gone.
AAlterHooks::class . '::testSubtypeAlter',
    BAlterHooks::class . '::testSubtypeAlter',
    CAlterHooks::class . '::testAlter',
    CAlterHooks::class . '::testSubtypeAlter',
    AAlterHooks::class . '::testAlterAfterC',
    DAlterHooks::class . '::testAlter',
    DAlterHooks::class . '::testSubtypeAlter',
  ], [
    'test',
    'test_subtype',
  ]);
  $this->disableModules([
    'bbb_hook_order_test',
  ]);
  $this->assertAlterCallOrder([
    CAlterHooks::class . '::testAlter',
    AAlterHooks::class . '::testAlterAfterC',
    DAlterHooks::class . '::testAlter',
  ], 'test');
  $this->assertAlterCallOrder([
    AAlterHooks::class . '::testSubtypeAlter',
    CAlterHooks::class . '::testSubtypeAlter',
    DAlterHooks::class . '::testSubtypeAlter',
  ], 'test_subtype');
  $this->assertAlterCallOrder([
    AAlterHooks::class . '::testSubtypeAlter',
    CAlterHooks::class . '::testAlter',
    CAlterHooks::class . '::testSubtypeAlter',
    AAlterHooks::class . '::testAlterAfterC',
    DAlterHooks::class . '::testAlter',
    DAlterHooks::class . '::testSubtypeAlter',
  ], [
    'test',
    'test_subtype',
  ]);
}

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