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 blocks']); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: public function createEntity() { Chris@18: if (!BlockContentType::load('basic')) { Chris@18: $block_content_type = BlockContentType::create([ Chris@18: 'id' => 'basic', Chris@18: 'label' => 'basic', Chris@18: 'revision' => FALSE, Chris@18: ]); Chris@18: $block_content_type->save(); Chris@18: block_content_add_body_field($block_content_type->id()); Chris@18: } Chris@18: Chris@18: // Create a "Llama" custom block. Chris@18: $block_content = BlockContent::create([ Chris@18: 'info' => 'Llama', Chris@18: 'type' => 'basic', Chris@18: 'body' => [ Chris@18: 'value' => 'The name "llama" was adopted by European settlers from native Peruvians.', Chris@18: 'format' => 'plain_text', Chris@18: ], Chris@18: ]) Chris@18: ->setUnpublished(); Chris@18: $block_content->save(); Chris@18: return $block_content; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedDocument() { Chris@18: $self_url = Url::fromUri('base:/jsonapi/block_content/basic/' . $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' => 'block_content--basic', Chris@18: 'links' => [ Chris@18: 'self' => ['href' => $self_url], Chris@18: ], Chris@18: 'attributes' => [ Chris@18: 'body' => [ Chris@18: 'value' => 'The name "llama" was adopted by European settlers from native Peruvians.', Chris@18: 'format' => 'plain_text', Chris@18: 'summary' => NULL, Chris@18: 'processed' => "

The name "llama" was adopted by European settlers from native Peruvians.

\n", Chris@18: ], Chris@18: 'changed' => (new \DateTime())->setTimestamp($this->entity->getChangedTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339), Chris@18: 'info' => 'Llama', Chris@18: 'revision_log' => NULL, Chris@18: 'revision_created' => (new \DateTime())->setTimestamp($this->entity->getRevisionCreationTime())->setTimezone(new \DateTimeZone('UTC'))->format(\DateTime::RFC3339), Chris@18: 'revision_translation_affected' => TRUE, Chris@18: 'status' => FALSE, Chris@18: 'langcode' => 'en', Chris@18: 'default_langcode' => TRUE, Chris@18: 'drupal_internal__id' => 1, Chris@18: 'drupal_internal__revision_id' => 1, Chris@18: 'reusable' => TRUE, Chris@18: ], Chris@18: 'relationships' => [ Chris@18: 'block_content_type' => [ Chris@18: 'data' => [ Chris@18: 'id' => BlockContentType::load('basic')->uuid(), Chris@18: 'type' => 'block_content_type--block_content_type', Chris@18: ], Chris@18: 'links' => [ Chris@18: 'related' => ['href' => $self_url . '/block_content_type'], Chris@18: 'self' => ['href' => $self_url . '/relationships/block_content_type'], Chris@18: ], Chris@18: ], Chris@18: 'revision_user' => [ Chris@18: 'data' => NULL, Chris@18: 'links' => [ Chris@18: 'related' => ['href' => $self_url . '/revision_user'], Chris@18: 'self' => ['href' => $self_url . '/relationships/revision_user'], 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' => 'block_content--basic', Chris@18: 'attributes' => [ Chris@18: 'info' => 'Dramallama', Chris@18: ], Chris@18: ], Chris@18: ]; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedUnauthorizedAccessCacheability() { Chris@18: // @see \Drupal\block_content\BlockContentAccessControlHandler() Chris@18: return parent::getExpectedUnauthorizedAccessCacheability() Chris@18: ->addCacheTags(['block_content:1']); Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedCacheTags(array $sparse_fieldset = NULL) { Chris@18: $tags = parent::getExpectedCacheTags($sparse_fieldset); Chris@18: if ($sparse_fieldset === NULL || in_array('body', $sparse_fieldset)) { Chris@18: $tags = Cache::mergeTags($tags, ['config:filter.format.plain_text']); Chris@18: } Chris@18: return $tags; Chris@18: } Chris@18: Chris@18: /** Chris@18: * {@inheritdoc} Chris@18: */ Chris@18: protected function getExpectedCacheContexts(array $sparse_fieldset = NULL) { Chris@18: $contexts = parent::getExpectedCacheContexts($sparse_fieldset); Chris@18: if ($sparse_fieldset === NULL || in_array('body', $sparse_fieldset)) { Chris@18: $contexts = Cache::mergeContexts($contexts, ['languages:language_interface', 'theme']); Chris@18: } Chris@18: return $contexts; 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->entity->setPublished()->save(); Chris@18: $this->doTestCollectionFilterAccessForPublishableEntities('info', NULL, 'administer blocks'); Chris@18: } Chris@18: Chris@18: }