Chris@18
|
1 <?php
|
Chris@18
|
2
|
Chris@18
|
3 namespace Drupal\Tests\jsonapi\Functional;
|
Chris@18
|
4
|
Chris@18
|
5 use Drupal\aggregator\Entity\Feed;
|
Chris@18
|
6 use Drupal\aggregator\Entity\Item;
|
Chris@18
|
7 use Drupal\Tests\rest\Functional\BcTimestampNormalizerUnixTestTrait;
|
Chris@18
|
8
|
Chris@18
|
9 /**
|
Chris@18
|
10 * JSON:API integration test for the "Item" content entity type.
|
Chris@18
|
11 *
|
Chris@18
|
12 * @group jsonapi
|
Chris@18
|
13 */
|
Chris@18
|
14 class ItemTest extends ResourceTestBase {
|
Chris@18
|
15
|
Chris@18
|
16 use BcTimestampNormalizerUnixTestTrait;
|
Chris@18
|
17
|
Chris@18
|
18 /**
|
Chris@18
|
19 * {@inheritdoc}
|
Chris@18
|
20 */
|
Chris@18
|
21 public static $modules = ['aggregator'];
|
Chris@18
|
22
|
Chris@18
|
23 /**
|
Chris@18
|
24 * {@inheritdoc}
|
Chris@18
|
25 */
|
Chris@18
|
26 protected static $entityTypeId = 'aggregator_item';
|
Chris@18
|
27
|
Chris@18
|
28 /**
|
Chris@18
|
29 * {@inheritdoc}
|
Chris@18
|
30 */
|
Chris@18
|
31 protected static $resourceTypeName = 'aggregator_item--aggregator_item';
|
Chris@18
|
32
|
Chris@18
|
33 /**
|
Chris@18
|
34 * {@inheritdoc}
|
Chris@18
|
35 *
|
Chris@18
|
36 * @var \Drupal\aggregator\ItemInterface
|
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 static $patchProtectedFieldNames = [];
|
Chris@18
|
44
|
Chris@18
|
45 /**
|
Chris@18
|
46 * {@inheritdoc}
|
Chris@18
|
47 */
|
Chris@18
|
48 protected function setUpAuthorization($method) {
|
Chris@18
|
49 switch ($method) {
|
Chris@18
|
50 case 'GET':
|
Chris@18
|
51 $this->grantPermissionsToTestedRole(['access news feeds']);
|
Chris@18
|
52 break;
|
Chris@18
|
53
|
Chris@18
|
54 case 'POST':
|
Chris@18
|
55 case 'PATCH':
|
Chris@18
|
56 case 'DELETE':
|
Chris@18
|
57 $this->grantPermissionsToTestedRole(['administer news feeds']);
|
Chris@18
|
58 break;
|
Chris@18
|
59 }
|
Chris@18
|
60 }
|
Chris@18
|
61
|
Chris@18
|
62 /**
|
Chris@18
|
63 * {@inheritdoc}
|
Chris@18
|
64 */
|
Chris@18
|
65 protected function createEntity() {
|
Chris@18
|
66 // Create a "Camelids" feed.
|
Chris@18
|
67 $feed = Feed::create([
|
Chris@18
|
68 'title' => 'Camelids',
|
Chris@18
|
69 'url' => 'https://groups.drupal.org/not_used/167169',
|
Chris@18
|
70 'refresh' => 900,
|
Chris@18
|
71 'checked' => 1389919932,
|
Chris@18
|
72 'description' => 'Drupal Core Group feed',
|
Chris@18
|
73 ]);
|
Chris@18
|
74 $feed->save();
|
Chris@18
|
75
|
Chris@18
|
76 // Create a "Llama" item.
|
Chris@18
|
77 $item = Item::create();
|
Chris@18
|
78 $item->setTitle('Llama')
|
Chris@18
|
79 ->setFeedId($feed->id())
|
Chris@18
|
80 ->setLink('https://www.drupal.org/')
|
Chris@18
|
81 ->setPostedTime(123456789)
|
Chris@18
|
82 ->save();
|
Chris@18
|
83
|
Chris@18
|
84 return $item;
|
Chris@18
|
85 }
|
Chris@18
|
86
|
Chris@18
|
87 /**
|
Chris@18
|
88 * {@inheritdoc}
|
Chris@18
|
89 */
|
Chris@18
|
90 protected function createAnotherEntity($key) {
|
Chris@18
|
91 $duplicate = $this->getEntityDuplicate($this->entity, $key);
|
Chris@18
|
92 $duplicate->setLink('https://www.example.org/');
|
Chris@18
|
93 $duplicate->save();
|
Chris@18
|
94 return $duplicate;
|
Chris@18
|
95 }
|
Chris@18
|
96
|
Chris@18
|
97 /**
|
Chris@18
|
98 * {@inheritdoc}
|
Chris@18
|
99 */
|
Chris@18
|
100 protected function getExpectedDocument() {
|
Chris@18
|
101 return [];
|
Chris@18
|
102 }
|
Chris@18
|
103
|
Chris@18
|
104 /**
|
Chris@18
|
105 * {@inheritdoc}
|
Chris@18
|
106 */
|
Chris@18
|
107 protected function getPostDocument() {
|
Chris@18
|
108 return [];
|
Chris@18
|
109 }
|
Chris@18
|
110
|
Chris@18
|
111 /**
|
Chris@18
|
112 * {@inheritdoc}
|
Chris@18
|
113 */
|
Chris@18
|
114 protected function getExpectedUnauthorizedAccessMessage($method) {
|
Chris@18
|
115 switch ($method) {
|
Chris@18
|
116 case 'GET':
|
Chris@18
|
117 return "The 'access news feeds' permission is required.";
|
Chris@18
|
118
|
Chris@18
|
119 case 'POST':
|
Chris@18
|
120 case 'PATCH':
|
Chris@18
|
121 case 'DELETE':
|
Chris@18
|
122 return "The 'administer news feeds' permission is required.";
|
Chris@18
|
123 }
|
Chris@18
|
124 }
|
Chris@18
|
125
|
Chris@18
|
126 /**
|
Chris@18
|
127 * {@inheritdoc}
|
Chris@18
|
128 */
|
Chris@18
|
129 public function testGetIndividual() {
|
Chris@18
|
130 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
131 }
|
Chris@18
|
132
|
Chris@18
|
133 /**
|
Chris@18
|
134 * {@inheritdoc}
|
Chris@18
|
135 */
|
Chris@18
|
136 public function testCollection() {
|
Chris@18
|
137 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
138 }
|
Chris@18
|
139
|
Chris@18
|
140 /**
|
Chris@18
|
141 * {@inheritdoc}
|
Chris@18
|
142 */
|
Chris@18
|
143 public function testRelated() {
|
Chris@18
|
144 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
145 }
|
Chris@18
|
146
|
Chris@18
|
147 /**
|
Chris@18
|
148 * {@inheritdoc}
|
Chris@18
|
149 */
|
Chris@18
|
150 public function testRelationships() {
|
Chris@18
|
151 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
152 }
|
Chris@18
|
153
|
Chris@18
|
154 /**
|
Chris@18
|
155 * {@inheritdoc}
|
Chris@18
|
156 */
|
Chris@18
|
157 public function testPostIndividual() {
|
Chris@18
|
158 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
159 }
|
Chris@18
|
160
|
Chris@18
|
161 /**
|
Chris@18
|
162 * {@inheritdoc}
|
Chris@18
|
163 */
|
Chris@18
|
164 public function testPatchIndividual() {
|
Chris@18
|
165 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
166 }
|
Chris@18
|
167
|
Chris@18
|
168 /**
|
Chris@18
|
169 * {@inheritdoc}
|
Chris@18
|
170 */
|
Chris@18
|
171 public function testDeleteIndividual() {
|
Chris@18
|
172 $this->markTestSkipped('Remove this override in https://www.drupal.org/project/drupal/issues/2149851');
|
Chris@18
|
173 }
|
Chris@18
|
174
|
Chris@18
|
175 }
|