Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\jsonapi\Functional;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\Core\Url;
|
Chris@18
|
6 use Drupal\node\Entity\NodeType;
|
Chris@18
|
7 use Drupal\rdf\Entity\RdfMapping;
|
Chris@18
|
8
|
Chris@18
|
9 /**
|
Chris@18
|
10 * JSON:API integration test for the "RdfMapping" config entity type.
|
Chris@18
|
11 *
|
Chris@18
|
12 * @group jsonapi
|
Chris@18
|
13 */
|
Chris@18
|
14 class RdfMappingTest extends ResourceTestBase {
|
Chris@18
|
15
|
Chris@18
|
16 /**
|
Chris@18
|
17 * {@inheritdoc}
|
Chris@18
|
18 */
|
Chris@18
|
19 public static $modules = ['node', 'rdf'];
|
Chris@18
|
20
|
Chris@18
|
21 /**
|
Chris@18
|
22 * {@inheritdoc}
|
Chris@18
|
23 */
|
Chris@18
|
24 protected static $entityTypeId = 'rdf_mapping';
|
Chris@18
|
25
|
Chris@18
|
26 /**
|
Chris@18
|
27 * {@inheritdoc}
|
Chris@18
|
28 */
|
Chris@18
|
29 protected static $resourceTypeName = 'rdf_mapping--rdf_mapping';
|
Chris@18
|
30
|
Chris@18
|
31 /**
|
Chris@18
|
32 * {@inheritdoc}
|
Chris@18
|
33 *
|
Chris@18
|
34 * @var \Drupal\rdf\RdfMappingInterface
|
Chris@18
|
35 */
|
Chris@18
|
36 protected $entity;
|
Chris@18
|
37
|
Chris@18
|
38 /**
|
Chris@18
|
39 * {@inheritdoc}
|
Chris@18
|
40 */
|
Chris@18
|
41 protected function setUpAuthorization($method) {
|
Chris@18
|
42 $this->grantPermissionsToTestedRole(['administer site configuration']);
|
Chris@18
|
43 }
|
Chris@18
|
44
|
Chris@18
|
45 /**
|
Chris@18
|
46 * {@inheritdoc}
|
Chris@18
|
47 */
|
Chris@18
|
48 protected function createEntity() {
|
Chris@18
|
49 // Create a "Camelids" node type.
|
Chris@18
|
50 $camelids = NodeType::create([
|
Chris@18
|
51 'name' => 'Camelids',
|
Chris@18
|
52 'type' => 'camelids',
|
Chris@18
|
53 ]);
|
Chris@18
|
54
|
Chris@18
|
55 $camelids->save();
|
Chris@18
|
56
|
Chris@18
|
57 // Create the RDF mapping.
|
Chris@18
|
58 $llama = RdfMapping::create([
|
Chris@18
|
59 'targetEntityType' => 'node',
|
Chris@18
|
60 'bundle' => 'camelids',
|
Chris@18
|
61 ]);
|
Chris@18
|
62 $llama->setBundleMapping([
|
Chris@18
|
63 'types' => ['sioc:Item', 'foaf:Document'],
|
Chris@18
|
64 ])
|
Chris@18
|
65 ->setFieldMapping('title', [
|
Chris@18
|
66 'properties' => ['dc:title'],
|
Chris@18
|
67 ])
|
Chris@18
|
68 ->setFieldMapping('created', [
|
Chris@18
|
69 'properties' => ['dc:date', 'dc:created'],
|
Chris@18
|
70 'datatype' => 'xsd:dateTime',
|
Chris@18
|
71 'datatype_callback' => ['callable' => 'Drupal\rdf\CommonDataConverter::dateIso8601Value'],
|
Chris@18
|
72 ])
|
Chris@18
|
73 ->save();
|
Chris@18
|
74
|
Chris@18
|
75 return $llama;
|
Chris@18
|
76 }
|
Chris@18
|
77
|
Chris@18
|
78 /**
|
Chris@18
|
79 * {@inheritdoc}
|
Chris@18
|
80 */
|
Chris@18
|
81 protected function getExpectedDocument() {
|
Chris@18
|
82 $self_url = Url::fromUri('base:/jsonapi/rdf_mapping/rdf_mapping/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl();
|
Chris@18
|
83 return [
|
Chris@18
|
84 'jsonapi' => [
|
Chris@18
|
85 'meta' => [
|
Chris@18
|
86 'links' => [
|
Chris@18
|
87 'self' => ['href' => 'http://jsonapi.org/format/1.0/'],
|
Chris@18
|
88 ],
|
Chris@18
|
89 ],
|
Chris@18
|
90 'version' => '1.0',
|
Chris@18
|
91 ],
|
Chris@18
|
92 'links' => [
|
Chris@18
|
93 'self' => ['href' => $self_url],
|
Chris@18
|
94 ],
|
Chris@18
|
95 'data' => [
|
Chris@18
|
96 'id' => $this->entity->uuid(),
|
Chris@18
|
97 'type' => 'rdf_mapping--rdf_mapping',
|
Chris@18
|
98 'links' => [
|
Chris@18
|
99 'self' => ['href' => $self_url],
|
Chris@18
|
100 ],
|
Chris@18
|
101 'attributes' => [
|
Chris@18
|
102 'bundle' => 'camelids',
|
Chris@18
|
103 'dependencies' => [
|
Chris@18
|
104 'config' => [
|
Chris@18
|
105 'node.type.camelids',
|
Chris@18
|
106 ],
|
Chris@18
|
107 'module' => [
|
Chris@18
|
108 'node',
|
Chris@18
|
109 ],
|
Chris@18
|
110 ],
|
Chris@18
|
111 'fieldMappings' => [
|
Chris@18
|
112 'title' => [
|
Chris@18
|
113 'properties' => [
|
Chris@18
|
114 'dc:title',
|
Chris@18
|
115 ],
|
Chris@18
|
116 ],
|
Chris@18
|
117 'created' => [
|
Chris@18
|
118 'properties' => [
|
Chris@18
|
119 'dc:date',
|
Chris@18
|
120 'dc:created',
|
Chris@18
|
121 ],
|
Chris@18
|
122 'datatype' => 'xsd:dateTime',
|
Chris@18
|
123 'datatype_callback' => [
|
Chris@18
|
124 'callable' => 'Drupal\rdf\CommonDataConverter::dateIso8601Value',
|
Chris@18
|
125 ],
|
Chris@18
|
126 ],
|
Chris@18
|
127 ],
|
Chris@18
|
128 'langcode' => 'en',
|
Chris@18
|
129 'status' => TRUE,
|
Chris@18
|
130 'targetEntityType' => 'node',
|
Chris@18
|
131 'types' => [
|
Chris@18
|
132 'sioc:Item',
|
Chris@18
|
133 'foaf:Document',
|
Chris@18
|
134 ],
|
Chris@18
|
135 'drupal_internal__id' => 'node.camelids',
|
Chris@18
|
136 ],
|
Chris@18
|
137 ],
|
Chris@18
|
138 ];
|
Chris@18
|
139 }
|
Chris@18
|
140
|
Chris@18
|
141 /**
|
Chris@18
|
142 * {@inheritdoc}
|
Chris@18
|
143 */
|
Chris@18
|
144 protected function getPostDocument() {
|
Chris@18
|
145 // @todo Update in https://www.drupal.org/node/2300677.
|
Chris@18
|
146 }
|
Chris@18
|
147
|
Chris@18
|
148 }
|