You are here

public function JsonapiMenuItemsTest::testParametersMinDepth in JSON:API Menu Items 1.2.x

Tests the JSON:API Menu Items resource with the 'min_depth' filter.

File

tests/src/Functional/JsonapiMenuItemsTest.php, line 164

Class

JsonapiMenuItemsTest
Tests JSON:API Menu Items functionality.

Namespace

Drupal\Tests\jsonapi_menu_items\Functional

Code

public function testParametersMinDepth() {
  $this
    ->drupalLogin($this->account);
  $link_title = $this
    ->randomMachineName();
  $content_link = $this
    ->createMenuLink($link_title, 'jsonapi_menu_test.open');
  $url = Url::fromRoute('jsonapi_menu_items.menu', [
    'menu' => 'jsonapi-menu-items-test',
    'filter' => [
      'min_depth' => 2,
    ],
  ]);
  [
    $content,
    $headers,
  ] = $this
    ->getJsonApiMenuItemsResponse($url);
  self::assertCount(2, $content['data']);
  self::assertCacheContext($headers, 'url.query_args:filter');
  $expected_items = Json::decode(strtr(file_get_contents(dirname(__DIR__, 2) . '/fixtures/min-depth-expected-items.json'), [
    '%uuid' => $content_link
      ->uuid(),
    '%title' => $link_title,
    '%base_path' => Url::fromRoute('<front>')
      ->toString(),
  ]));
  self::assertEquals($expected_items['data'], $content['data']);
  $url = Url::fromRoute('jsonapi_menu_items.menu', [
    'menu' => 'jsonapi-menu-items-test',
    'filter' => [
      'min_depth' => 1,
    ],
  ]);
  [
    $content,
    $headers,
  ] = $this
    ->getJsonApiMenuItemsResponse($url);
  self::assertCount(3, $content['data']);
}