Skip to content
Snippets Groups Projects
Commit 700f5918 authored by Michael Stenta's avatar Michael Stenta
Browse files

Issue #3390505: Error: uri is not a valid type for a JSON document

parent 8ece8e8b
Branches
Tags
1 merge request!11Issue #3390505: Error: uri is not a valid type for a JSON document
Pipeline #497387 passed
......@@ -48,6 +48,10 @@ services:
class: Drupal\jsonapi_schema\Normalizer\DataDefinitionTimestampNormalizer
tags:
- { name: normalizer, priority: 10 }
serializer.normalizer.data_definition.schema_json.uri:
class: Drupal\jsonapi_schema\Normalizer\DataDefinitionUriNormalizer
tags:
- { name: normalizer, priority: 10 }
serializer.normalizer.data_definition.schema_json.undefined:
class: Drupal\jsonapi_schema\Normalizer\DataDefinitionUndefinedNormalizer
tags:
......
<?php
namespace Drupal\jsonapi_schema\Normalizer;
use Drupal\Core\TypedData\DataDefinitionInterface;
/**
* Data definition normalizer.
*/
class DataDefinitionUriNormalizer extends DataDefinitionNormalizer {
/**
* {@inheritdoc}
*/
protected $supportedDataTypes = ['uri'];
/**
* {@inheritdoc}
*/
protected function extractPropertyData(DataDefinitionInterface $property, array $context = []) {
$value = parent::extractPropertyData($property);
$value['type'] = 'string';
$value['format'] = 'uri';
return $value;
}
}
......@@ -307,6 +307,22 @@ class JsonApiSchemaTest extends KernelTestBase {
'description' => 'Test string description',
]);
$field->save();
// Add a URI field.
$field_storage = FieldStorageConfig::create([
'field_name' => 'test_uri',
'type' => 'uri',
'entity_type' => 'node',
]);
$field_storage->save();
$field = FieldConfig::create([
'field_name' => 'test_uri',
'entity_type' => 'node',
'bundle' => 'article',
'label' => 'Test URI',
'description' => 'Test URI description',
]);
$field->save();
}
/**
......@@ -688,6 +704,9 @@ class JsonApiSchemaTest extends KernelTestBase {
// Test timestamp fields.
$this->assertEquals('date-time', $data['definitions']['attributes']['properties']['created']['format']);
// Test URI fields.
$this->assertEquals('uri', $data['definitions']['attributes']['properties']['test_uri']['format']);
}
/**
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment