[BUGFIX] Correct typo of ActionService->getDataHandler()
[Packages/TYPO3.CMS.git] / typo3 / sysext / workspaces / Tests / Functional / DataHandling / IRRE / CSV / AbstractActionTestCase.php
1 <?php
2 namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\IRRE\CSV;
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 require_once __DIR__ . '/../../../../../../core/Tests/Functional/DataHandling/AbstractDataHandlerActionTestCase.php';
18
19 /**
20 * Functional test for the DataHandler
21 */
22 abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase {
23
24 const VALUE_PageId = 89;
25 const VALUE_PageIdTarget = 90;
26 const VALUE_PageIdWebsite = 1;
27 const VALUE_ContentIdFirst = 297;
28 const VALUE_ContentIdLast = 298;
29 const VALUE_HotelIdFirst = 3;
30 const VALUE_HotelIdSecond = 4;
31 const VALUE_HotelIdThird = 5;
32 const VALUE_LanguageId = 1;
33 const VALUE_WorkspaceId = 1;
34
35 const TABLE_Page = 'pages';
36 const TABLE_Content = 'tt_content';
37 const TABLE_Hotel = 'tx_irretutorial_1ncsv_hotel';
38 const TABLE_Offer = 'tx_irretutorial_1ncsv_offer';
39
40 const FIELD_ContentHotel = 'tx_irretutorial_1ncsv_hotels';
41 const FIELD_HotelOffer = 'offers';
42
43 /**
44 * @var string
45 */
46 protected $scenarioDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/IRRE/CSV/DataSet/';
47
48 /**
49 * @var array
50 */
51 protected $coreExtensionsToLoad = array(
52 'fluid',
53 'version',
54 'workspaces',
55 );
56
57 public function setUp() {
58 parent::setUp();
59 $this->importScenarioDataSet('LiveDefaultPages');
60 $this->importScenarioDataSet('LiveDefaultElements');
61 $this->importScenarioDataSet('ReferenceIndex');
62
63 $this->setUpFrontendRootPage(1, array('typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts'));
64 $this->backendUser->workspace = self::VALUE_WorkspaceId;
65 }
66
67 /**
68 * Parent content records
69 */
70
71 /**
72 * @see DataSet/Assertion/createParentContentRecord.csv
73 */
74 public function createParentContent() {
75 $newTableIds = $this->actionService->createNewRecord(self::TABLE_Content, self::VALUE_PageId, array('header' => 'Testing #1'));
76 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
77 }
78
79 /**
80 * @see DataSet/Assertion/modifyParentContentRecord.csv
81 */
82 public function modifyParentContent() {
83 $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, array('header' => 'Testing #1'));
84 }
85
86 /**
87 * @see DataSet/Assertion/deleteParentContentRecord.csv
88 */
89 public function deleteParentContent() {
90 $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
91 }
92
93 /**
94 * @see DataSet/Assertion/deleteParentContentRecordAndDiscardDeletedParentRecord.csv
95 */
96 public function deleteParentContentAndDiscardDeletedParent() {
97 $newTableIds = $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
98 $versionedDeletedContentId = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
99 $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedDeletedContentId);
100 }
101
102 /**
103 * @see DataSet/Assertion/copyParentContentRecord.csv
104 */
105 public function copyParentContent() {
106 $newTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageId);
107 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
108 }
109
110 /**
111 * @see DataSet/copyParentContentToDifferentPage.csv
112 */
113 public function copyParentContentToDifferentPage() {
114 $newTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
115 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
116 }
117
118 /**
119 * @see DataSet/localizeParentContentKeep.csv
120 */
121 public function localizeParentContentInKeepMode() {
122 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
123 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = FALSE;
124 $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = FALSE;
125 $newTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
126 $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
127 }
128
129 /**
130 * @see DataSet/localizeParentContentWAllChildrenKeep.csv
131 */
132 public function localizeParentContentWithAllChildrenInKeepMode() {
133 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'keep';
134 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = TRUE;
135 $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = TRUE;
136 $newTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
137 $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
138 }
139
140 /**
141 * @see DataSet/localizeParentContentSelect.csv
142 */
143 public function localizeParentContentInSelectMode() {
144 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
145 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = FALSE;
146 $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = FALSE;
147 $newTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
148 $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
149 }
150
151 /**
152 * @see DataSet/localizeParentContentWAllChildrenSelect.csv
153 */
154 public function localizeParentContentWithAllChildrenInSelectMode() {
155 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizationMode'] = 'select';
156 $GLOBALS['TCA'][self::TABLE_Content]['columns'][self::FIELD_ContentHotel]['config']['behaviour']['localizeChildrenAtParentLocalization'] = TRUE;
157 $GLOBALS['TCA'][self::TABLE_Hotel]['columns'][self::FIELD_HotelOffer]['config']['behaviour']['localizeChildrenAtParentLocalization'] = TRUE;
158 $newTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
159 $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
160 }
161
162 /**
163 * @see DataSet/Assertion/changeParentContentRecordSorting.csv
164 */
165 public function changeParentContentSorting() {
166 $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
167 }
168
169 /**
170 * @see DataSet/Assertion/moveParentContentRecordToDifferentPage.csv
171 */
172 public function moveParentContentToDifferentPage() {
173 $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
174 }
175
176 /**
177 * @see DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv
178 */
179 public function moveParentContentToDifferentPageAndChangeSorting() {
180 $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
181 $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
182 }
183
184 /**
185 * Page records
186 */
187
188 /**
189 * @see DataSet/Assertion/modifyPageRecord.csv
190 */
191 public function modifyPage() {
192 $this->actionService->modifyRecord(self::TABLE_Page, self::VALUE_PageId, array('title' => 'Testing #1'));
193 }
194
195 /**
196 * @see DataSet/Assertion/deletePageRecord.csv
197 */
198 public function deletePage() {
199 $this->actionService->deleteRecord(self::TABLE_Page, self::VALUE_PageId);
200 }
201
202 /**
203 * @see DataSet/Assertion/copyPageRecord.csv
204 */
205 public function copyPage() {
206 $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
207 $this->recordIds['newPageId'] = $newTableIds[self::TABLE_Page][self::VALUE_PageId];
208 $this->recordIds['newContentIdFirst'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdFirst];
209 $this->recordIds['newContentIdLast'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
210 }
211
212 /**
213 * @test
214 * @see DataSet/Assertion/copyPageWHotelBeforeParentContent.csv
215 */
216 public function copyPageWithHotelBeforeParentContent() {
217 // Ensure hotels get processed first
218 $GLOBALS['TCA'] = array_merge(
219 array(self::TABLE_Hotel => $GLOBALS['TCA'][self::TABLE_Hotel]),
220 $GLOBALS['TCA']
221 );
222
223 $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
224 $this->recordIds['newPageId'] = $newTableIds[self::TABLE_Page][self::VALUE_PageId];
225 $this->recordIds['newContentIdFirst'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdFirst];
226 $this->recordIds['newContentIdLast'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
227 }
228
229 /**
230 * IRRE Child Records
231 */
232
233 /**
234 * @see DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv
235 */
236 public function createParentContentWithHotelAndOfferChildren() {
237 $newTableIds = $this->actionService->createNewRecords(
238 self::VALUE_PageId,
239 array(
240 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
241 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
242 self::TABLE_Offer => array('title' => 'Offer #1'),
243 )
244 );
245 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
246 }
247
248 /**
249 * @see DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv
250 */
251 public function createAndCopyParentContentWithHotelAndOfferChildren() {
252 // @todo Copying the new child records is broken in the Core
253 $newTableIds = $this->actionService->createNewRecords(
254 self::VALUE_PageId,
255 array(
256 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
257 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
258 self::TABLE_Offer => array('title' => 'Offer #1'),
259 )
260 );
261 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
262 $this->recordIds['newHotelId'] = $newTableIds[self::TABLE_Hotel][0];
263 $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, $this->recordIds['newContentId'], self::VALUE_PageId);
264 $this->recordIds['copiedContentId'] = $copiedTableIds[self::TABLE_Content][$this->recordIds['newContentId']];
265 $this->recordIds['copiedHotelId'] = $copiedTableIds[self::TABLE_Hotel][$this->recordIds['newHotelId']];
266 }
267
268 /**
269 * @see DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord.csv
270 */
271 public function createAndCopyParentContentWithHotelAndOfferChildrenAndDiscardCopiedParent() {
272 // @todo Copying the new child records is broken in the Core
273 $newTableIds = $this->actionService->createNewRecords(
274 self::VALUE_PageId,
275 array(
276 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
277 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
278 self::TABLE_Offer => array('title' => 'Offer #1'),
279 )
280 );
281 $this->recordIds['newContentId'] = $newTableIds['tt_content'][0];
282 $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, $this->recordIds['newContentId'], self::VALUE_PageId);
283 $this->recordIds['copiedContentId'] = $copiedTableIds[self::TABLE_Content][$this->recordIds['newContentId']];
284 $versionedCopiedContentId = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, $this->recordIds['copiedContentId']);
285 $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedCopiedContentId);
286 }
287
288 /**
289 * @see DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv
290 */
291 public function createAndLocalizeParentContentWithHotelAndOfferChildren() {
292 // @todo Localizing the new child records is broken in the Core
293 $newTableIds = $this->actionService->createNewRecords(
294 self::VALUE_PageId,
295 array(
296 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
297 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
298 self::TABLE_Offer => array('title' => 'Offer #1'),
299 )
300 );
301 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
302 $this->recordIds['newHotelId'] = $newTableIds[self::TABLE_Hotel][0];
303 $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $this->recordIds['newContentId'], self::VALUE_LanguageId);
304 $this->recordIds['localizedContentId'] = $localizedTableIds[self::TABLE_Content][$this->recordIds['newContentId']];
305 $this->recordIds['localizedHotelId'] = $localizedTableIds[self::TABLE_Hotel][$this->recordIds['newHotelId']];
306 }
307
308 /**
309 * @see DataSet/Assertion/createNLocalizeParentContentNHotelNOfferChildrenNDiscardCreatedParent.csv
310 */
311 public function createAndLocalizeParentContentWithHotelAndOfferChildrenAndDiscardCreatedParent() {
312 $newTableIds = $this->actionService->createNewRecords(
313 self::VALUE_PageId,
314 array(
315 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
316 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
317 self::TABLE_Offer => array('title' => 'Offer #1'),
318 )
319 );
320 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
321 $this->recordIds['versionedNewContentId'] = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, $this->recordIds['newContentId']);
322 $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $this->recordIds['newContentId'], self::VALUE_LanguageId);
323 $this->recordIds['localizedContentId'] = $localizedTableIds[self::TABLE_Content][$this->recordIds['newContentId']];
324 $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $this->recordIds['versionedNewContentId']);
325 }
326
327 /**
328 * @see DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord.csv
329 */
330 public function createAndLocalizeParentContentWithHotelAndOfferChildrenAndDiscardLocalizedParent() {
331 // @todo Localizing the new child records is broken in the Core
332 $newTableIds = $this->actionService->createNewRecords(
333 self::VALUE_PageId,
334 array(
335 self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__nextUid'),
336 self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__nextUid'),
337 self::TABLE_Offer => array('title' => 'Offer #1'),
338 )
339 );
340 $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
341 $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $this->recordIds['newContentId'], self::VALUE_LanguageId);
342 $this->recordIds['localizedContentId'] = $localizedTableIds[self::TABLE_Content][$this->recordIds['newContentId']];
343 $versionedLocalizedContentId = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, $this->recordIds['localizedContentId']);
344 $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedLocalizedContentId);
345 }
346
347 /**
348 * @see DataSet/Assertion/modifyOnlyHotelChildRecord.csv
349 */
350 public function modifyOnlyHotelChild() {
351 $this->actionService->modifyRecord(self::TABLE_Hotel, 4, array('title' => 'Testing #1'));
352 }
353
354 /**
355 * @see DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv
356 */
357 public function modifyParentAndChangeHotelChildrenSorting() {
358 $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, array(self::FIELD_ContentHotel => '4,3'));
359 }
360
361 /**
362 * @see DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv
363 */
364 public function modifyParentWithHotelChild() {
365 $this->actionService->modifyRecords(
366 self::VALUE_PageId,
367 array(
368 self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
369 self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
370 )
371 );
372 }
373
374 /**
375 * @see DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord.csv
376 */
377 public function modifyParentWithHotelChildAndDiscardModifiedParent() {
378 $this->actionService->modifyRecords(
379 self::VALUE_PageId,
380 array(
381 self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
382 self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
383 )
384 );
385 $modifiedContentId = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, self::VALUE_ContentIdFirst);
386 $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $modifiedContentId);
387 }
388
389 /**
390 * @see DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords.csv
391 */
392 public function modifyParentWithHotelChildAndDiscardAll() {
393 $this->actionService->modifyRecords(
394 self::VALUE_PageId,
395 array(
396 self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
397 self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
398 )
399 );
400 $modifiedContentId = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, self::VALUE_ContentIdFirst);
401 $modifiedHotelId = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Hotel, 4);
402 $this->actionService->clearWorkspaceRecords(
403 array(
404 self::TABLE_Content => array($modifiedContentId),
405 self::TABLE_Hotel => array($modifiedHotelId),
406 )
407 );
408 }
409
410 /**
411 * @see DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv
412 */
413 public function modifyParentAndAddHotelChild() {
414 $this->actionService->modifyRecords(
415 self::VALUE_PageId,
416 array(
417 self::TABLE_Content => array('uid' => self::VALUE_ContentIdLast, self::FIELD_ContentHotel => '5,__nextUid'),
418 self::TABLE_Hotel => array('uid' => '__NEW', 'title' => 'Hotel #2'),
419 )
420 );
421 }
422
423 /**
424 * @see DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv
425 */
426 public function modifyParentAndDeleteHotelChild() {
427 $this->actionService->modifyRecord(
428 self::TABLE_Content,
429 self::VALUE_ContentIdFirst,
430 array(self::FIELD_ContentHotel => '3'),
431 array(self::TABLE_Hotel => array(4))
432 );
433 }
434
435 /**
436 * @see DataSet/modifyNDiscardNModifyParentWHotelChild.csv
437 */
438 public function modifyAndDiscardAndModifyParentWithHotelChild() {
439 $this->actionService->modifyRecords(
440 self::VALUE_PageId,
441 array(
442 self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, 'header' => 'Testing #1', self::FIELD_ContentHotel => '3,4'),
443 self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
444 )
445 );
446 $this->recordIds['versionedContentId'] = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Content, self::VALUE_ContentIdFirst);
447 $this->recordIds['versionedHotelIdFirst'] = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Hotel, 3);
448 $this->recordIds['versionedHotelIdSecond'] = $this->actionService->getDataHandler()->getAutoVersionId(self::TABLE_Hotel, 4);
449 $this->actionService->clearWorkspaceRecords(
450 array(
451 self::TABLE_Content => array($this->recordIds['versionedContentId']),
452 self::TABLE_Hotel => array($this->recordIds['versionedHotelIdSecond']),
453 )
454 );
455 $this->actionService->modifyRecords(
456 self::VALUE_PageId,
457 array(
458 self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, 'header' => 'Testing #2', self::FIELD_ContentHotel => '3,4'),
459 self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #2'),
460 )
461 );
462 }
463
464 }