Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\jsonapi\Functional;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\Core\Cache\Cache;
|
Chris@18
|
6 use Drupal\Core\Session\AccountInterface;
|
Chris@18
|
7 use Drupal\Core\Url;
|
Chris@18
|
8 use Drupal\language\Entity\ContentLanguageSettings;
|
Chris@18
|
9 use Drupal\node\Entity\NodeType;
|
Chris@18
|
10
|
Chris@18
|
11 /**
|
Chris@18
|
12 * JSON:API integration test for "ContentLanguageSettings" config entity type.
|
Chris@18
|
13 *
|
Chris@18
|
14 * @group jsonapi
|
Chris@18
|
15 */
|
Chris@18
|
16 class ContentLanguageSettingsTest extends ResourceTestBase {
|
Chris@18
|
17
|
Chris@18
|
18 /**
|
Chris@18
|
19 * {@inheritdoc}
|
Chris@18
|
20 */
|
Chris@18
|
21 public static $modules = ['language', 'node'];
|
Chris@18
|
22
|
Chris@18
|
23 /**
|
Chris@18
|
24 * {@inheritdoc}
|
Chris@18
|
25 */
|
Chris@18
|
26 protected static $entityTypeId = 'language_content_settings';
|
Chris@18
|
27
|
Chris@18
|
28 /**
|
Chris@18
|
29 * {@inheritdoc}
|
Chris@18
|
30 */
|
Chris@18
|
31 protected static $resourceTypeName = 'language_content_settings--language_content_settings';
|
Chris@18
|
32
|
Chris@18
|
33 /**
|
Chris@18
|
34 * {@inheritdoc}
|
Chris@18
|
35 *
|
Chris@18
|
36 * @var \Drupal\language\ContentLanguageSettingsInterface
|
Chris@18
|
37 */
|
Chris@18
|
38 protected $entity;
|
Chris@18
|
39
|
Chris@18
|
40 /**
|
Chris@18
|
41 * {@inheritdoc}
|
Chris@18
|
42 */
|
Chris@18
|
43 protected function setUpAuthorization($method) {
|
Chris@18
|
44 $this->grantPermissionsToTestedRole(['administer languages']);
|
Chris@18
|
45 }
|
Chris@18
|
46
|
Chris@18
|
47 /**
|
Chris@18
|
48 * {@inheritdoc}
|
Chris@18
|
49 */
|
Chris@18
|
50 protected function createEntity() {
|
Chris@18
|
51 // Create a "Camelids" node type.
|
Chris@18
|
52 $camelids = NodeType::create([
|
Chris@18
|
53 'name' => 'Camelids',
|
Chris@18
|
54 'type' => 'camelids',
|
Chris@18
|
55 ]);
|
Chris@18
|
56 $camelids->save();
|
Chris@18
|
57
|
Chris@18
|
58 $entity = ContentLanguageSettings::create([
|
Chris@18
|
59 'target_entity_type_id' => 'node',
|
Chris@18
|
60 'target_bundle' => 'camelids',
|
Chris@18
|
61 ]);
|
Chris@18
|
62 $entity->setDefaultLangcode('site_default')
|
Chris@18
|
63 ->save();
|
Chris@18
|
64
|
Chris@18
|
65 return $entity;
|
Chris@18
|
66 }
|
Chris@18
|
67
|
Chris@18
|
68 /**
|
Chris@18
|
69 * {@inheritdoc}
|
Chris@18
|
70 */
|
Chris@18
|
71 protected function getExpectedDocument() {
|
Chris@18
|
72 $self_url = Url::fromUri('base:/jsonapi/language_content_settings/language_content_settings/' . $this->entity->uuid())->setAbsolute()->toString(TRUE)->getGeneratedUrl();
|
Chris@18
|
73 return [
|
Chris@18
|
74 'jsonapi' => [
|
Chris@18
|
75 'meta' => [
|
Chris@18
|
76 'links' => [
|
Chris@18
|
77 'self' => ['href' => 'http://jsonapi.org/format/1.0/'],
|
Chris@18
|
78 ],
|
Chris@18
|
79 ],
|
Chris@18
|
80 'version' => '1.0',
|
Chris@18
|
81 ],
|
Chris@18
|
82 'links' => [
|
Chris@18
|
83 'self' => ['href' => $self_url],
|
Chris@18
|
84 ],
|
Chris@18
|
85 'data' => [
|
Chris@18
|
86 'id' => $this->entity->uuid(),
|
Chris@18
|
87 'type' => 'language_content_settings--language_content_settings',
|
Chris@18
|
88 'links' => [
|
Chris@18
|
89 'self' => ['href' => $self_url],
|
Chris@18
|
90 ],
|
Chris@18
|
91 'attributes' => [
|
Chris@18
|
92 'default_langcode' => 'site_default',
|
Chris@18
|
93 'dependencies' => [
|
Chris@18
|
94 'config' => [
|
Chris@18
|
95 'node.type.camelids',
|
Chris@18
|
96 ],
|
Chris@18
|
97 ],
|
Chris@18
|
98 'langcode' => 'en',
|
Chris@18
|
99 'language_alterable' => FALSE,
|
Chris@18
|
100 'status' => TRUE,
|
Chris@18
|
101 'target_bundle' => 'camelids',
|
Chris@18
|
102 'target_entity_type_id' => 'node',
|
Chris@18
|
103 'drupal_internal__id' => 'node.camelids',
|
Chris@18
|
104 ],
|
Chris@18
|
105 ],
|
Chris@18
|
106 ];
|
Chris@18
|
107 }
|
Chris@18
|
108
|
Chris@18
|
109 /**
|
Chris@18
|
110 * {@inheritdoc}
|
Chris@18
|
111 */
|
Chris@18
|
112 protected function getPostDocument() {
|
Chris@18
|
113 // @todo Update in https://www.drupal.org/node/2300677.
|
Chris@18
|
114 }
|
Chris@18
|
115
|
Chris@18
|
116 /**
|
Chris@18
|
117 * {@inheritdoc}
|
Chris@18
|
118 */
|
Chris@18
|
119 protected function getExpectedCacheContexts(array $sparse_fieldset = NULL) {
|
Chris@18
|
120 return Cache::mergeContexts(parent::getExpectedCacheContexts(), ['languages:language_interface']);
|
Chris@18
|
121 }
|
Chris@18
|
122
|
Chris@18
|
123 /**
|
Chris@18
|
124 * {@inheritdoc}
|
Chris@18
|
125 */
|
Chris@18
|
126 protected function createAnotherEntity($key) {
|
Chris@18
|
127 NodeType::create([
|
Chris@18
|
128 'name' => 'Llamaids',
|
Chris@18
|
129 'type' => 'llamaids',
|
Chris@18
|
130 ])->save();
|
Chris@18
|
131
|
Chris@18
|
132 $entity = ContentLanguageSettings::create([
|
Chris@18
|
133 'target_entity_type_id' => 'node',
|
Chris@18
|
134 'target_bundle' => 'llamaids',
|
Chris@18
|
135 ]);
|
Chris@18
|
136 $entity->setDefaultLangcode('site_default');
|
Chris@18
|
137 $entity->save();
|
Chris@18
|
138
|
Chris@18
|
139 return $entity;
|
Chris@18
|
140 }
|
Chris@18
|
141
|
Chris@18
|
142 /**
|
Chris@18
|
143 * {@inheritdoc}
|
Chris@18
|
144 */
|
Chris@18
|
145 protected static function getExpectedCollectionCacheability(AccountInterface $account, array $collection, array $sparse_fieldset = NULL, $filtered = FALSE) {
|
Chris@18
|
146 $cacheability = parent::getExpectedCollectionCacheability($account, $collection, $sparse_fieldset, $filtered);
|
Chris@18
|
147 if (static::entityAccess(reset($collection), 'view', $account)->isAllowed()) {
|
Chris@18
|
148 $cacheability->addCacheContexts(['languages:language_interface']);
|
Chris@18
|
149 }
|
Chris@18
|
150 return $cacheability;
|
Chris@18
|
151 }
|
Chris@18
|
152
|
Chris@18
|
153 }
|