function JsonApiFilterRegressionTest::testFilterByIdFromIssue3015759

Same name and namespace in other branches
  1. 10 core/modules/jsonapi/tests/src/Functional/JsonApiFilterRegressionTest.php \Drupal\Tests\jsonapi\Functional\JsonApiFilterRegressionTest::testFilterByIdFromIssue3015759()
  2. main core/modules/jsonapi/tests/src/Functional/JsonApiFilterRegressionTest.php \Drupal\Tests\jsonapi\Functional\JsonApiFilterRegressionTest::testFilterByIdFromIssue3015759()

Ensures that filtering by a sequential internal ID named 'id' is possible.

See also

https://www.drupal.org/project/drupal/issues/3015759

File

core/modules/jsonapi/tests/src/Functional/JsonApiFilterRegressionTest.php, line 84

Class

JsonApiFilterRegressionTest
JSON:API regression tests.

Namespace

Drupal\Tests\jsonapi\Functional

Code

public function testFilterByIdFromIssue3015759() : void {
  // Set up data model.
  $this->assertTrue($this->container
    ->get('module_installer')
    ->install([
    'menu_link_content',
  ], TRUE), 'Installed modules.');
  $this->rebuildAll();
  // Create data.
  $menu_link = MenuLinkContent::create([
    'title' => $this->randomMachineName(),
    'link' => [
      'uri' => 'internal:/user/login',
    ],
    'menu_name' => 'main',
  ]);
  $menu_link->save();
  // Test.
  $user = $this->drupalCreateUser([
    'administer menu',
  ]);
  $response = $this->request('GET', Url::fromUri('internal:/jsonapi/menu_link_content/menu_link_content?filter[drupal_internal__id]=' . $menu_link->id()), [
    RequestOptions::AUTH => [
      $user->getAccountName(),
      $user->pass_raw,
    ],
  ]);
  $doc = $this->getDocumentFromResponse($response);
  $this->assertSame(200, $response->getStatusCode());
  $this->assertNotEmpty($doc['data']);
  $this->assertSame($doc['data'][0]['id'], $menu_link->uuid());
  $this->assertSame($doc['data'][0]['attributes']['drupal_internal__id'], (int) $menu_link->id());
  $this->assertSame($doc['data'][0]['attributes']['title'], $menu_link->label());
}

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