Issue #3042198 by Wim Leers, tim.plunkett, phenaproxima, xjm: Add JSON:API integration test for LayoutBuilderEntityViewDisplay
parent
195a3c9bf0
commit
d0ec4df02d
|
@ -95,6 +95,13 @@ class ResourceObjectNormalizer extends NormalizerBase {
|
|||
return $normalized_field->withCacheableDependency(CacheableMetadata::createFromObject($field_access_result));
|
||||
}
|
||||
else {
|
||||
// @todo Replace this workaround after https://www.drupal.org/node/3043245
|
||||
// or remove the need for this in https://www.drupal.org/node/2942975.
|
||||
// See \Drupal\layout_builder\Normalizer\LayoutEntityDisplayNormalizer.
|
||||
if ($context['resource_object']->getResourceType()->getDeserializationTargetClass() === 'Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay' && $context['resource_object']->getField('third_party_settings') === $field) {
|
||||
unset($field['layout_builder']['sections']);
|
||||
}
|
||||
|
||||
// Config "fields" in this case are arrays or primitives and do not need
|
||||
// to be normalized.
|
||||
return CacheableNormalization::permanent($field);
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\Tests\layout_builder\Functional\Jsonapi;
|
||||
|
||||
use Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage;
|
||||
use Drupal\Tests\jsonapi\Functional\EntityViewDisplayTest;
|
||||
|
||||
/**
|
||||
* JSON:API integration test for the "EntityViewDisplay" config entity type.
|
||||
*
|
||||
* @group jsonapi
|
||||
* @group layout_builder
|
||||
*/
|
||||
class LayoutBuilderEntityViewDisplayTest extends EntityViewDisplayTest {
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public static $modules = ['layout_builder'];
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function createEntity() {
|
||||
/** @var \Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay $entity */
|
||||
$entity = parent::createEntity();
|
||||
$entity
|
||||
->enableLayoutBuilder()
|
||||
->setOverridable()
|
||||
->save();
|
||||
$this->assertCount(1, $entity->getThirdPartySetting('layout_builder', 'sections'));
|
||||
return $entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function getExpectedDocument() {
|
||||
$document = parent::getExpectedDocument();
|
||||
array_unshift($document['data']['attributes']['dependencies']['module'], 'layout_builder');
|
||||
$document['data']['attributes']['hidden'][OverridesSectionStorage::FIELD_NAME] = TRUE;
|
||||
$document['data']['attributes']['third_party_settings']['layout_builder'] = [
|
||||
'enabled' => TRUE,
|
||||
'allow_custom' => TRUE,
|
||||
];
|
||||
return $document;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue