Chris@18: NULL, Chris@18: ]; Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function setUpAuthorization($method) { Chris@18: $this->grantPermissionsToTestedRole(['administer menu']); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function createEntity() { Chris@18: $menu_link = MenuLinkContent::create([ Chris@18: 'id' => 'llama', Chris@18: 'title' => 'Llama Gabilondo', Chris@18: 'description' => 'Llama Gabilondo', Chris@18: 'link' => 'https://nl.wikipedia.org/wiki/Llama', Chris@18: 'weight' => 0, Chris@18: 'menu_name' => 'main', Chris@18: ]); Chris@18: $menu_link->save(); Chris@18: Chris@18: return $menu_link; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedDocument() { Chris@18: $self_url = Url::fromUri('base:/jsonapi/menu_link_content/menu_link_content/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl(); Chris@18: return [ Chris@18: 'jsonapi' => [ Chris@18: 'meta' => [ Chris@18: 'links' => [ Chris@18: 'self' => ['href' => 'http://jsonapi.org/format/1.0/'], Chris@18: ], Chris@18: ], Chris@18: 'version' => '1.0', Chris@18: ], Chris@18: 'links' => [ Chris@18: 'self' => ['href' => $self_url], Chris@18: ], Chris@18: 'data' => [ Chris@18: 'id' => $this->entity->uuid(), Chris@18: 'type' => 'menu_link_content--menu_link_content', Chris@18: 'links' => [ Chris@18: 'self' => ['href' => $self_url], Chris@18: ], Chris@18: 'attributes' => [ Chris@18: 'bundle' => 'menu_link_content', Chris@18: 'link' => [ Chris@18: 'uri' => 'https://nl.wikipedia.org/wiki/Llama', Chris@18: 'title' => NULL, Chris@18: 'options' => [], Chris@18: ], Chris@18: 'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339), Chris@18: 'default_langcode' => TRUE, Chris@18: 'description' => 'Llama Gabilondo', Chris@18: 'enabled' => TRUE, Chris@18: 'expanded' => FALSE, Chris@18: 'external' => FALSE, Chris@18: 'langcode' => 'en', Chris@18: 'menu_name' => 'main', Chris@18: 'parent' => NULL, Chris@18: 'rediscover' => FALSE, Chris@18: 'title' => 'Llama Gabilondo', Chris@18: 'weight' => 0, Chris@18: 'drupal_internal__id' => 1, Chris@18: 'drupal_internal__revision_id' => 1, Chris@18: 'revision_created' => (new \DateTime())->setTimestamp($this->entity->getRevisionCreationTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339), Chris@18: 'revision_log_message' => NULL, Chris@18: // @todo Attempt to remove this in https://www.drupal.org/project/drupal/issues/2933518. Chris@18: 'revision_translation_affected' => TRUE, Chris@18: ], Chris@18: 'relationships' => [ Chris@18: 'revision_user' => [ Chris@18: 'data' => NULL, Chris@18: 'links' => [ Chris@18: 'related' => [ Chris@18: 'href' => $self_url . '/revision_user', Chris@18: ], Chris@18: 'self' => [ Chris@18: 'href' => $self_url . '/relationships/revision_user', Chris@18: ], Chris@18: ], Chris@18: ], Chris@18: ], Chris@18: ], Chris@18: ]; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getPostDocument() { Chris@18: return [ Chris@18: 'data' => [ Chris@18: 'type' => 'menu_link_content--menu_link_content', Chris@18: 'attributes' => [ Chris@18: 'title' => 'Dramallama', Chris@18: 'link' => [ Chris@18: 'uri' => 'http://www.urbandictionary.com/define.php?term=drama%20llama', Chris@18: ], Chris@18: ], Chris@18: ], Chris@18: ]; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedUnauthorizedAccessMessage($method) { Chris@18: switch ($method) { Chris@18: case 'DELETE': Chris@18: return "The 'administer menu' permission is required."; Chris@18: Chris@18: default: Chris@18: return parent::getExpectedUnauthorizedAccessMessage($method); Chris@18: } Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testRelated() { Chris@18: $this->markTestSkipped('Remove this in https://www.drupal.org/project/jsonapi/issues/2940339'); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function testCollectionFilterAccess() { Chris@18: $this->doTestCollectionFilterAccessBasedOnPermissions('title', 'administer menu'); Chris@18: } Chris@18: Chris@18: }