[BUGFIX] Allow array of paths in psr-4 autoload definition
[Packages/TYPO3.CMS.git] / typo3 / sysext / workspaces / Tests / Functional / DataHandling / ManyToMany / Publish / ActionTest.php
1 <?php
2 namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\ManyToMany\Publish;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 /**
18 * Functional test for the DataHandler
19 */
20 class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\ManyToMany\AbstractActionTestCase
21 {
22 /**
23 * @var string
24 */
25 protected $assertionDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/ManyToMany/Publish/DataSet/';
26
27 /**
28 * MM Relations
29 */
30
31 /**
32 * @test
33 * @see DataSet/Assertion/addCategoryRelation.csv
34 */
35 public function addCategoryRelation()
36 {
37 parent::addCategoryRelation();
38 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
39 $this->assertAssertionDataSet('addCategoryRelation');
40
41 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
42 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
43 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
44 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category B', 'Category A.A'));
45 }
46
47 /**
48 * @test
49 * @see DataSet/Assertion/deleteCategoryRelation.csv
50 */
51 public function deleteCategoryRelation()
52 {
53 parent::deleteCategoryRelation();
54 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
55 $this->assertAssertionDataSet('deleteCategoryRelation');
56
57 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
58 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
59 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
60 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A'));
61 $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
62 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
63 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C', 'Category A.A'));
64 }
65
66 /**
67 * @test
68 * @see DataSet/Assertion/changeCategoryRelationSorting.csv
69 */
70 public function changeCategoryRelationSorting()
71 {
72 parent::changeCategoryRelationSorting();
73 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
74 $this->assertAssertionDataSet('changeCategoryRelationSorting');
75
76 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
77 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
78 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
79 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category B'));
80 }
81
82 /**
83 * @test
84 * @see DataSet/Assertion/createContentRecordAndAddCategoryRelation.csv
85 */
86 public function createContentAndAddRelation()
87 {
88 parent::createContentAndAddRelation();
89 $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['newContentId']);
90 $this->assertAssertionDataSet('createContentNAddRelation');
91
92 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
93 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
94 ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
95 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
96 ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField('categories')
97 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B'));
98 }
99
100 /**
101 * @test
102 * @see DataSet/Assertion/createCategoryRecordAndAddCategoryRelation.csv
103 */
104 public function createCategoryAndAddRelation()
105 {
106 parent::createCategoryAndAddRelation();
107 $this->actionService->publishRecord(self::TABLE_Category, $this->recordIds['newCategoryId']);
108 $this->assertAssertionDataSet('createCategoryNAddRelation');
109
110 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
111 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
112 ->setTable(self::TABLE_Category)->setField('title')->setValues('Testing #1'));
113 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
114 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
115 ->setTable(self::TABLE_Category)->setField('title')->setValues('Testing #1'));
116 }
117
118 /**
119 * @test
120 * @see DataSet/Assertion/createContentRecordAndCreateCategoryRelation.csv
121 */
122 public function createContentAndCreateRelation()
123 {
124 parent::createContentAndCreateRelation();
125 $this->actionService->publishRecords(
126 array(
127 self::TABLE_Category => array($this->recordIds['newCategoryId']),
128 self::TABLE_Content => array($this->recordIds['newContentId']),
129 )
130 );
131 $this->assertAssertionDataSet('createContentNCreateRelation');
132
133 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
134 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
135 ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
136 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
137 ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField('categories')
138 ->setTable(self::TABLE_Category)->setField('title')->setValues('Testing #1'));
139 }
140
141 /**
142 * @test
143 * @see DataSet/Assertion/createCategoryRecordAndCreateCategoryRelation.csv
144 */
145 public function createCategoryAndCreateRelation()
146 {
147 parent::createCategoryAndCreateRelation();
148 $this->actionService->publishRecords(
149 array(
150 self::TABLE_Content => array($this->recordIds['newContentId']),
151 self::TABLE_Category => array($this->recordIds['newCategoryId']),
152 )
153 );
154 $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
155 $this->assertAssertionDataSet('createCategoryNCreateRelation');
156 }
157
158 /**
159 * @test
160 * @see DataSet/Assertion/modifyCategoryRecordOfCategoryRelation.csv
161 */
162 public function modifyCategoryOfRelation()
163 {
164 parent::modifyCategoryOfRelation();
165 $this->actionService->publishRecord(self::TABLE_Category, self::VALUE_CategoryIdFirst);
166 $this->assertAssertionDataSet('modifyCategoryOfRelation');
167
168 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
169 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
170 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
171 ->setTable(self::TABLE_Category)->setField('title')->setValues('Testing #1', 'Category B'));
172 }
173
174 /**
175 * @test
176 * @see DataSet/Assertion/modifyContentRecordOfCategoryRelation.csv
177 */
178 public function modifyContentOfRelation()
179 {
180 parent::modifyContentOfRelation();
181 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
182 $this->assertAssertionDataSet('modifyContentOfRelation');
183
184 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
185 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
186 ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
187 }
188
189 /**
190 * @test
191 * @see DataSet/Assertion/modifyBothRecordsOfCategoryRelation.csv
192 */
193 public function modifyBothsOfRelation()
194 {
195 parent::modifyBothsOfRelation();
196 $this->actionService->publishRecords(
197 array(
198 self::TABLE_Content => array(self::VALUE_ContentIdFirst),
199 self::TABLE_Category => array(self::VALUE_CategoryIdFirst),
200 )
201 );
202 $this->assertAssertionDataSet('modifyBothsOfRelation');
203
204 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
205 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
206 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
207 ->setTable(self::TABLE_Category)->setField('title')->setValues('Testing #1', 'Category B'));
208 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
209 ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
210 }
211
212 /**
213 * @test
214 * @see DataSet/Assertion/deleteContentRecordOfCategoryRelation.csv
215 */
216 public function deleteContentOfRelation()
217 {
218 parent::deleteContentOfRelation();
219 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
220 $this->assertAssertionDataSet('deleteContentOfRelation');
221
222 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
223 $this->assertThat($responseSections, $this->getRequestSectionDoesNotHaveRecordConstraint()
224 ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
225 }
226
227 /**
228 * @test
229 * @see DataSet/Assertion/deleteCategoryRecordOfCategoryRelation.csv
230 */
231 public function deleteCategoryOfRelation()
232 {
233 parent::deleteCategoryOfRelation();
234 $this->actionService->publishRecord(self::TABLE_Category, self::VALUE_CategoryIdFirst);
235 $this->assertAssertionDataSet('deleteCategoryOfRelation');
236
237 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
238 $this->assertThat($responseSections, $this->getRequestSectionStructureDoesNotHaveRecordConstraint()
239 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
240 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A'));
241 }
242
243 /**
244 * @test
245 * @see DataSet/Assertion/copyContentRecordOfCategoryRelation.csv
246 */
247 public function copyContentOfRelation()
248 {
249 parent::copyContentOfRelation();
250 $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['newContentId']);
251 $this->assertAssertionDataSet('copyContentOfRelation');
252
253 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
254 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
255 ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField('categories')
256 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C'));
257 }
258
259 /**
260 * @test
261 * @see DataSet/Assertion/copyCategoryRecordOfCategoryRelation.csv
262 */
263 public function copyCategoryOfRelation()
264 {
265 parent::copyCategoryOfRelation();
266 $this->actionService->publishRecord(self::TABLE_Category, $this->recordIds['newCategoryId']);
267 $this->assertAssertionDataSet('copyCategoryOfRelation');
268
269 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, 0)->getResponseSections();
270 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
271 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
272 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category A (copy 1)'));
273 }
274
275 /**
276 * @test
277 * @see DataSet/Assertion/localizeContentRecordOfCategoryRelation.csv
278 */
279 public function localizeContentOfRelation()
280 {
281 parent::localizeContentOfRelation();
282 $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['localizedContentId']);
283 $this->assertAssertionDataSet('localizeContentOfRelation');
284
285 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
286 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
287 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField('categories')
288 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C'));
289 }
290
291 /**
292 * @test
293 * @see DataSet/Assertion/localizeCategoryRecordOfCategoryRelation.csv
294 */
295 public function localizeCategoryOfRelation()
296 {
297 parent::localizeCategoryOfRelation();
298 $this->actionService->publishRecord(self::TABLE_Category, $this->recordIds['localizedCategoryId']);
299 $this->assertAssertionDataSet('localizeCategoryOfRelation');
300
301 $responseSections = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseSections();
302 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
303 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField('categories')
304 ->setTable(self::TABLE_Category)->setField('title')->setValues('[Translate to Dansk:] Category A', 'Category B'));
305 }
306
307 /**
308 * @test
309 * @see DataSet/Assertion/moveContentRecordOfCategoryRelationToDifferentPage.csv
310 */
311 public function moveContentOfRelationToDifferentPage()
312 {
313 parent::moveContentOfRelationToDifferentPage();
314 $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
315 $this->assertAssertionDataSet('moveContentOfRelationToDifferentPage');
316
317 $responseSections = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0)->getResponseSections();
318 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
319 ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField('categories')
320 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C'));
321 }
322
323 /**
324 * @test
325 * @see DataSet/Assertion/copyPage.csv
326 */
327 public function copyPage()
328 {
329 parent::copyPage();
330 $this->actionService->publishRecords(
331 array(
332 self::TABLE_Page => array($this->recordIds['newPageId']),
333 self::TABLE_Content => array($this->recordIds['newContentIdFirst'], $this->recordIds['newContentIdLast']),
334 )
335 );
336 $this->assertAssertionDataSet('copyPage');
337
338 $responseSections = $this->getFrontendResponse($this->recordIds['newPageId'])->getResponseSections();
339 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
340 ->setTable(self::TABLE_Page)->setField('title')->setValues('Relations'));
341 $this->assertThat($responseSections, $this->getRequestSectionHasRecordConstraint()
342 ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1', 'Regular Element #2'));
343 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
344 ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentIdFirst'])->setRecordField('categories')
345 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category A', 'Category B'));
346 $this->assertThat($responseSections, $this->getRequestSectionStructureHasRecordConstraint()
347 ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentIdLast'])->setRecordField('categories')
348 ->setTable(self::TABLE_Category)->setField('title')->setValues('Category B', 'Category C'));
349 }
350 }