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));
|
return $normalized_field->withCacheableDependency(CacheableMetadata::createFromObject($field_access_result));
|
||||||
}
|
}
|
||||||
else {
|
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
|
// Config "fields" in this case are arrays or primitives and do not need
|
||||||
// to be normalized.
|
// to be normalized.
|
||||||
return CacheableNormalization::permanent($field);
|
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