Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\jsonapi\Functional;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\Component\Serialization\Json;
|
Chris@18
|
6 use Drupal\Component\Utility\NestedArray;
|
Chris@18
|
7 use Drupal\Core\Cache\Cache;
|
Chris@18
|
8 use Drupal\Core\Url;
|
Chris@18
|
9 use Drupal\language\Entity\ConfigurableLanguage;
|
Chris@18
|
10 use GuzzleHttp\RequestOptions;
|
Chris@18
|
11
|
Chris@18
|
12 /**
|
Chris@18
|
13 * JSON:API integration test for the "ConfigurableLanguage" config entity type.
|
Chris@18
|
14 *
|
Chris@18
|
15 * @group jsonapi
|
Chris@18
|
16 */
|
Chris@18
|
17 class ConfigurableLanguageTest extends ResourceTestBase {
|
Chris@18
|
18
|
Chris@18
|
19 /**
|
Chris@18
|
20 * {@inheritdoc}
|
Chris@18
|
21 */
|
Chris@18
|
22 public static $modules = ['language'];
|
Chris@18
|
23
|
Chris@18
|
24 /**
|
Chris@18
|
25 * {@inheritdoc}
|
Chris@18
|
26 */
|
Chris@18
|
27 protected static $entityTypeId = 'configurable_language';
|
Chris@18
|
28
|
Chris@18
|
29 /**
|
Chris@18
|
30 * {@inheritdoc}
|
Chris@18
|
31 */
|
Chris@18
|
32 protected static $resourceTypeName = 'configurable_language--configurable_language';
|
Chris@18
|
33
|
Chris@18
|
34 /**
|
Chris@18
|
35 * {@inheritdoc}
|
Chris@18
|
36 *
|
Chris@18
|
37 * @var \Drupal\Core\Field\Entity\BaseFieldOverride
|
Chris@18
|
38 */
|
Chris@18
|
39 protected $entity;
|
Chris@18
|
40
|
Chris@18
|
41 /**
|
Chris@18
|
42 * {@inheritdoc}
|
Chris@18
|
43 */
|
Chris@18
|
44 protected function setUpAuthorization($method) {
|
Chris@18
|
45 $this->grantPermissionsToTestedRole(['administer languages']);
|
Chris@18
|
46 }
|
Chris@18
|
47
|
Chris@18
|
48 /**
|
Chris@18
|
49 * {@inheritdoc}
|
Chris@18
|
50 */
|
Chris@18
|
51 protected function createEntity() {
|
Chris@18
|
52 $configurable_language = ConfigurableLanguage::create([
|
Chris@18
|
53 'id' => 'll',
|
Chris@18
|
54 'label' => 'Llama Language',
|
Chris@18
|
55 ]);
|
Chris@18
|
56 $configurable_language->save();
|
Chris@18
|
57
|
Chris@18
|
58 return $configurable_language;
|
Chris@18
|
59 }
|
Chris@18
|
60
|
Chris@18
|
61 /**
|
Chris@18
|
62 * {@inheritdoc}
|
Chris@18
|
63 */
|
Chris@18
|
64 protected function getExpectedDocument() {
|
Chris@18
|
65 $self_url = Url::fromUri('base:/jsonapi/configurable_language/configurable_language/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl();
|
Chris@18
|
66 return [
|
Chris@18
|
67 'jsonapi' => [
|
Chris@18
|
68 'meta' => [
|
Chris@18
|
69 'links' => [
|
Chris@18
|
70 'self' => ['href' => 'http://jsonapi.org/format/1.0/'],
|
Chris@18
|
71 ],
|
Chris@18
|
72 ],
|
Chris@18
|
73 'version' => '1.0',
|
Chris@18
|
74 ],
|
Chris@18
|
75 'links' => [
|
Chris@18
|
76 'self' => ['href' => $self_url],
|
Chris@18
|
77 ],
|
Chris@18
|
78 'data' => [
|
Chris@18
|
79 'id' => $this->entity->uuid(),
|
Chris@18
|
80 'type' => 'configurable_language--configurable_language',
|
Chris@18
|
81 'links' => [
|
Chris@18
|
82 'self' => ['href' => $self_url],
|
Chris@18
|
83 ],
|
Chris@18
|
84 'attributes' => [
|
Chris@18
|
85 'dependencies' => [],
|
Chris@18
|
86 'direction' => 'ltr',
|
Chris@18
|
87 'label' => 'Llama Language',
|
Chris@18
|
88 'langcode' => 'en',
|
Chris@18
|
89 'locked' => FALSE,
|
Chris@18
|
90 'status' => TRUE,
|
Chris@18
|
91 'weight' => 0,
|
Chris@18
|
92 'drupal_internal__id' => 'll',
|
Chris@18
|
93 ],
|
Chris@18
|
94 ],
|
Chris@18
|
95 ];
|
Chris@18
|
96 }
|
Chris@18
|
97
|
Chris@18
|
98 /**
|
Chris@18
|
99 * {@inheritdoc}
|
Chris@18
|
100 */
|
Chris@18
|
101 protected function getPostDocument() {
|
Chris@18
|
102 // @todo Update in https://www.drupal.org/node/2300677.
|
Chris@18
|
103 }
|
Chris@18
|
104
|
Chris@18
|
105 /**
|
Chris@18
|
106 * {@inheritdoc}
|
Chris@18
|
107 */
|
Chris@18
|
108 protected function getExpectedCacheContexts(array $sparse_fieldset = NULL) {
|
Chris@18
|
109 return Cache::mergeContexts(parent::getExpectedCacheContexts(), ['languages:language_interface']);
|
Chris@18
|
110 }
|
Chris@18
|
111
|
Chris@18
|
112 /**
|
Chris@18
|
113 * Test a GET request for a default config entity, which has a _core key.
|
Chris@18
|
114 *
|
Chris@18
|
115 * @see https://www.drupal.org/project/jsonapi/issues/2915539
|
Chris@18
|
116 */
|
Chris@18
|
117 public function testGetIndividualDefaultConfig() {
|
Chris@18
|
118 // @todo Remove line below in favor of commented line in https://www.drupal.org/project/jsonapi/issues/2878463.
|
Chris@18
|
119 $url = Url::fromRoute('jsonapi.configurable_language--configurable_language.individual', ['entity' => ConfigurableLanguage::load('en')->uuid()]);
|
Chris@18
|
120 /* $url = ConfigurableLanguage::load('en')->toUrl('jsonapi'); */
|
Chris@18
|
121
|
Chris@18
|
122 $request_options = [];
|
Chris@18
|
123 $request_options[RequestOptions::HEADERS]['Accept'] = 'application/vnd.api+json';
|
Chris@18
|
124 $request_options = NestedArray::mergeDeep($request_options, $this->getAuthenticationRequestOptions());
|
Chris@18
|
125 $this->setUpAuthorization('GET');
|
Chris@18
|
126 $response = $this->request('GET', $url, $request_options);
|
Chris@18
|
127
|
Chris@18
|
128 $normalization = Json::decode((string) $response->getBody());
|
Chris@18
|
129 $this->assertArrayNotHasKey('_core', $normalization['data']['attributes']);
|
Chris@18
|
130 }
|
Chris@18
|
131
|
Chris@18
|
132 }
|