[TASK] Integrate IRRE CSV Functional Tests 52/27752/2
authorOliver Hader <oliver@typo3.org>
Thu, 20 Feb 2014 10:20:07 +0000 (11:20 +0100)
committerOliver Hader <oliver.hader@typo3.org>
Fri, 21 Feb 2014 10:13:01 +0000 (11:13 +0100)
Integrate comma separated value functional tests for Inline
Relational Record Editing for both live and workspace context.

Resolves: #56143
Releases: 6.2
Change-Id: I8750cabd2e4df41e229ada888a43a104339cc55c
Reviewed-on: https://review.typo3.org/27752
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
55 files changed:
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/LiveActionTest.php [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Configuration/ExtTables/ext_tables.general.php
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/Resources/Private/Language/locallang_db.xml
typo3/sysext/core/Tests/Functional/Fixtures/Extensions/irre_tutorial/ext_tables.sql
typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecordAndDiscardDeletedParentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/WorkspaceActionTest.php [new file with mode: 0644]

diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php
new file mode 100644 (file)
index 0000000..11eff60
--- /dev/null
@@ -0,0 +1,410 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\InlineRelationalRecordEditing\CommaSeparatedValue;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Oliver Hader <oliver.hader@typo3.org>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+require_once dirname(dirname(dirname(__FILE__))) . '/AbstractDataHandlerActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase {
+
+       const VALUE_PageId = 89;
+       const VALUE_PageIdTarget = 90;
+       const VALUE_PageIdWebsite = 1;
+       const VALUE_ContentIdFirst = 297;
+       const VALUE_ContentIdLast = 298;
+       const VALUE_LanguageId = 1;
+
+       const TABLE_Page = 'pages';
+       const TABLE_Content = 'tt_content';
+       const TABLE_Hotel = 'tx_irretutorial_1ncsv_hotel';
+       const TABLE_Offer = 'tx_irretutorial_1ncsv_offer';
+
+       const FIELD_ContentHotel = 'tx_irretutorial_1ncsv_hotels';
+       const FIELD_HotelOffer = 'offers';
+
+       /**
+        * @var string
+        */
+       protected $dataSetDirectory = 'typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/';
+
+       public function setUp() {
+               parent::setUp();
+               $this->importScenarioDataSet('LiveDefaultPages');
+               $this->importScenarioDataSet('LiveDefaultElements');
+
+               $this->setUpFrontendRootPage(1, array('typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts'));
+       }
+
+       /**
+        * Parent content records
+        */
+
+       /**
+        * @test
+        */
+       public function createParentContentRecord() {
+               $this->actionService->createNewRecord(self::TABLE_Content, self::VALUE_PageId, array('header' => 'Testing #1'));
+               $this->assertAssertionDataSet('createParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentContentRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, array('header' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function deleteParentContentRecord() {
+               $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('deleteParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        */
+       public function copyParentContentRecord() {
+               $newTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageId);
+               $this->assertAssertionDataSet('copyParentContentRecord');
+
+               $newContentId = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function localizeParentContentRecord() {
+               $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+               $this->assertAssertionDataSet('localizeParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('[Translate to Dansk:] Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function changeParentContentRecordSorting() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('changeParentContentRecordSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function moveParentContentRecordToDifferentPage() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+               $this->assertAssertionDataSet('moveParentContentRecordToDifferentPage');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function moveParentContentRecordToDifferentPageAndChangeSorting() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('moveParentContentRecordToDifferentPageAndChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #2', 'Regular Element #1'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * Page records
+        */
+
+       /**
+        * @test
+        */
+       public function modifyPageRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Page, self::VALUE_PageId, array('title' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyPageRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Page, 'title', 'Testing #1');
+       }
+
+       /**
+        * @test
+        */
+       public function deletePageRecord() {
+               $this->actionService->deleteRecord(self::TABLE_Page, self::VALUE_PageId);
+               $this->assertAssertionDataSet('deletePageRecord');
+
+               $response = $this->getFrontendResponse(self::VALUE_PageId, 0, 0, 0, FALSE);
+               $this->assertContains('PageNotFoundException', $response->getError());
+       }
+
+       /**
+        * @test
+        */
+       public function copyPageRecord() {
+               $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
+               $this->assertAssertionDataSet('copyPageRecord');
+
+               $newPageId = $newTableIds[self::TABLE_Page][self::VALUE_PageId];
+               $responseContent = $this->getFrontendResponse($newPageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2', 'Hotel #1'));
+       }
+
+       /**
+        * IRRE Child Records
+        */
+
+       /**
+        * @test
+        */
+       public function createParentContentRecordWithHotelAndOfferChildRecords() {
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $this->assertAssertionDataSet('createParentContentRecordWithHotelAndOfferChildRecords');
+
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #1'
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function createAndCopyParentContentRecordWithHotelAndOfferChildRecords() {
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $newHotelId = $newTableIds[self::TABLE_Hotel][0];
+               $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, $newContentId, self::VALUE_PageId);
+               $this->assertAssertionDataSet('createAndCopyParentContentRecordWithHotelAndOfferChildRecords');
+
+               $copiedContentId = $copiedTableIds[self::TABLE_Content][$newContentId];
+               $copiedHotelId = $copiedTableIds[self::TABLE_Hotel][$newHotelId];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #1'
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $copiedContentId, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #1'
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Hotel . ':' . $copiedHotelId, self::FIELD_HotelOffer,
+                       self::TABLE_Offer, 'title', 'Offer #1'
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords() {
+               // @todo Localizing the new child records is broken in the Core
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $newHotelId = $newTableIds[self::TABLE_Hotel][0];
+               $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $newContentId, self::VALUE_LanguageId);
+               $this->assertAssertionDataSet('createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords');
+
+               $localizedContentId = $localizedTableIds[self::TABLE_Content][$newContentId];
+               $localizedHotelId = $localizedTableIds[self::TABLE_Hotel][$newHotelId];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseContent();
+
+               // @todo Does not work since children don't point to live-default record
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . $localizedContentId, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', '[Translate to Dansk:] Hotel #1'
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Hotel . ':' . $localizedHotelId, self::FIELD_HotelOffer,
+                               self::TABLE_Offer, 'title', '[Translate to Dansk:] Offer #1'
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function modifyOnlyHotelChildRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Hotel, 4, array('title' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyOnlyHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Testing #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndChangeHotelChildRecordsSorting() {
+               $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, array(self::FIELD_ContentHotel => '4,3'));
+               $this->assertAssertionDataSet('modifyParentRecordAndChangeHotelChildRecordsSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #2', 'Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordWithHotelChildRecord() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
+                       )
+               );
+               $this->assertAssertionDataSet('modifyParentRecordWithHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Testing #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndAddHotelChildRecord() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => '__NEW', 'title' => 'Hotel #2'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdLast, self::FIELD_ContentHotel => '5,__previousUid'),
+                       )
+               );
+               $this->assertAssertionDataSet('modifyParentRecordAndAddHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndDeleteHotelChildRecord() {
+               $this->actionService->modifyRecord(
+                       self::TABLE_Content,
+                       self::VALUE_ContentIdFirst,
+                       array(self::FIELD_ContentHotel => '3'),
+                       array(self::TABLE_Hotel => array(4))
+               );
+               $this->assertAssertionDataSet('modifyParentRecordAndDeleteHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #1'
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #2'
+               );
+       }
+
+}
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv
new file mode 100644 (file)
index 0000000..0a7647e
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,768,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,"5"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,16,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,32,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,4,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,8,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,16,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,64,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,256,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,512,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,768,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,1024,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,1280,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv
new file mode 100644 (file)
index 0000000..6750c48
--- /dev/null
@@ -0,0 +1,47 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
+,91,90,256,0,0,0,0,0,0,Relations
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,91,256,0,0,0,0,0,0,0,0,"Regular Element #2",0,6
+,300,91,128,0,0,0,0,0,0,0,0,"Regular Element #1",0,"7,8"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,91,64,0,0,0,0,0,0,0,0,"Hotel #1",9
+,7,91,256,0,0,0,0,0,0,0,0,"Hotel #1","10,11"
+,8,91,128,0,0,0,0,0,0,0,0,"Hotel #2",12
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,91,32,0,0,0,0,0,0,0,0,"Offer #1.1",14
+,10,91,256,0,0,0,0,0,0,0,0,"Offer #1.1","15,16,17"
+,11,91,128,0,0,0,0,0,0,0,0,"Offer #1.2","18,19"
+,12,91,64,0,0,0,0,0,0,0,0,"Offer #2.1",20
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,91,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,15,91,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,16,91,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,17,91,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,18,91,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,19,91,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,20,91,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv
new file mode 100644 (file)
index 0000000..8978eb3
--- /dev/null
@@ -0,0 +1,28 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,0,0,0,0,0,"Regular Element #2 (copy 1)",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,64,0,0,0,0,0,0,0,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..c9c8ce2
--- /dev/null
@@ -0,0 +1,30 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,0,0,0,0,0,"Testing #1",,6
+,300,89,64,0,0,0,0,0,0,0,0,"Testing #1 (copy 1)",0,7
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,0,0,0,0,0,"Hotel #1",9
+,7,89,32,0,0,0,0,0,0,0,0,"Hotel #1",10
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,0,0,0,0,0,"Offer #1",
+,10,89,16,0,0,0,0,0,0,0,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..6661621
--- /dev/null
@@ -0,0 +1,29 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,0,0,0,0,0,"Testing #1",,6
+,300,89,192,0,1,299,0,0,0,0,0,"[Translate to Dansk:] Testing #1",0,7
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,0,0,0,0,0,"Hotel #1",9
+,7,89,48,0,1,6,0,0,0,0,0,"[Translate to Dansk:] Hotel #1",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,0,0,0,0,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv
new file mode 100644 (file)
index 0000000..2064224
--- /dev/null
@@ -0,0 +1,5 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,0,0,0,0,0,"Testing #1",,
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..5e7e0da
--- /dev/null
@@ -0,0 +1,27 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,0,0,0,0,0,"Testing #1",,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,0,0,0,0,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,0,0,0,0,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv
new file mode 100644 (file)
index 0000000..c6f77db
--- /dev/null
@@ -0,0 +1,30 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,1000000000,1,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,1000000000,1,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,1000000000,1,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,1000000000,1,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,1000000000,1,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,1000000000,1,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,1000000000,1,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,1000000000,1,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,1000000000,1,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv
new file mode 100644 (file)
index 0000000..2b44cf0
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,1000000000,1,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,1000000000,1,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,1000000000,1,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv
new file mode 100644 (file)
index 0000000..7c46430
--- /dev/null
@@ -0,0 +1,26 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,768,0,1,298,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,96,0,1,5,0,0,0,0,0,"[Translate to Dansk:] Hotel #1",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..fbc241c
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Testing #1",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv
new file mode 100644 (file)
index 0000000..ed4fd56
--- /dev/null
@@ -0,0 +1,6 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,"Testing #1"
+,90,88,512,0,0,0,0,0,0,Target
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv
new file mode 100644 (file)
index 0000000..074640b
--- /dev/null
@@ -0,0 +1,4 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Testing #1",,5
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..d3f5267
--- /dev/null
@@ -0,0 +1,25 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,"5,6"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,0,0,0,0,0,"Hotel #2",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv
new file mode 100644 (file)
index 0000000..f82c638
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"4,3"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..1bef707
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,3
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,1000000000,1,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,1000000000,1,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,1000000000,1,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..fbc241c
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Testing #1",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv
new file mode 100644 (file)
index 0000000..80be9a1
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,90,256,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,90,256,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,90,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv
new file mode 100644 (file)
index 0000000..73b4085
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,90,512,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,90,64,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,90,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,90,256,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,90,32,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,90,64,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,90,128,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,90,256,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,90,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,90,8,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,90,16,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,90,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,90,64,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,90,128,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,90,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv
new file mode 100644 (file)
index 0000000..4a196a4
--- /dev/null
@@ -0,0 +1,28 @@
+"sys_language",,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,"5"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2","7"
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1","8"
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1","12"
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1","13"
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv
new file mode 100644 (file)
index 0000000..17b04d4
--- /dev/null
@@ -0,0 +1,6 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/LiveActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/LiveActionTest.php
new file mode 100644 (file)
index 0000000..5fca3f6
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\InlineRelationalRecordEditing\CommaSeparatedValue;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Oliver Hader <oliver.hader@typo3.org>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+require_once dirname(__FILE__) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class LiveActionTest extends AbstractActionTestCase {
+
+       public function setUp() {
+               parent::setUp();
+               $this->backendUser->workspace = 0;
+       }
+
+}
index 2ec9b2f..9f7a282 100644 (file)
@@ -88,6 +88,25 @@ if (!defined('TYPO3_MODE')) {
                                ),
                        )
                ),
+                'tx_irretutorial_1ncsv_hotels' => array(
+                       'exclude' => 1,
+                       'label' => 'LLL:EXT:irre_tutorial/Resources/Private/Language/locallang_db.xml:tt_content.tx_irretutorial_1ncsv_hotels',
+                       'config' => array(
+                               'type' => 'inline',
+                               'foreign_table' => 'tx_irretutorial_1ncsv_hotel',
+                               'maxitems' => 10,
+                               'appearance' => array(
+                                       'showSynchronizationLink' => 1,
+                                       'showAllLocalizationLink' => 1,
+                                       'showPossibleLocalizationRecords' => 1,
+                                       'showRemovedLocalizationRecords' => 1,
+                               ),
+                               'behaviour' => array(
+                                       'localizationMode' => 'select',
+                                       'localizeChildrenAtParentLocalization' => TRUE,
+                               ),
+                       )
+               ),
                'tx_irretutorial_flexform' => array(
                        'exclude' => 1,
                        'label' => 'LLL:EXT:irre_tutorial/Resources/Private/Language/locallang_db.xml:tt_content.tx_irretutorial_flexform',
@@ -103,6 +122,6 @@ if (!defined('TYPO3_MODE')) {
 
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
        'tt_content',
-       '--div--;LLL:EXT:irre_tutorial/Resources/Private/Language/locallang_db.xml:tt_content.div.irre, tx_irretutorial_1nff_hotels;;;;1-1-1, tx_irretutorial_flexform'
+       '--div--;LLL:EXT:irre_tutorial/Resources/Private/Language/locallang_db.xml:tt_content.div.irre, tx_irretutorial_1nff_hotels;;;;1-1-1, tx_irretutorial_1ncsv_hotels, tx_irretutorial_flexform'
 );
 ?>
\ No newline at end of file
index 349e703..279fd02 100644 (file)
@@ -12,7 +12,8 @@
                        <label index="pages.doktype.div.irre">IRRE Tutorial</label>
                        <label index="pages.doktype.I.233">IRRE Tutorial Test Page</label>
                        <label index="pages.tx_irretutorial_hotels">Hotels:</label>
-                       <label index="tt_content.tx_irretutorial_1nff_hotels">Hotels:</label>
+                       <label index="tt_content.tx_irretutorial_1nff_hotels">Hotels (1nff):</label>
+                       <label index="tt_content.tx_irretutorial_1ncsv_hotels">Hotels (1ncsv):</label>
                        <label index="tt_content.tx_irretutorial_flexform">IRRE:</label>
                        <label index="tt_content.tx_irretutorial_flexform.hotels">IRRE:</label>
                        <label index="tt_content.div.irre">IRRE Tutorial</label>
index 7616e15..64fb750 100644 (file)
@@ -23,6 +23,7 @@ CREATE TABLE pages_language_overlay (
 #
 CREATE TABLE tt_content (
     tx_irretutorial_1nff_hotels int(11) DEFAULT '0' NOT NULL,
+    tx_irretutorial_1ncsv_hotels text NOT NULL,
     tx_irretutorial_flexform mediumtext
 );
 
index 4e1ff31..95452ce 100644 (file)
@@ -19,6 +19,9 @@ watcher {
                tx_irretutorial_1nff_hotel = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,offers
                tx_irretutorial_1nff_offer = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,prices
                tx_irretutorial_1nff_price = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,price
+               tx_irretutorial_1ncsv_hotel = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,offers
+               tx_irretutorial_1ncsv_offer = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,prices
+               tx_irretutorial_1ncsv_price = uid,_ORIG_uid,_LOCALIZED_UID,pid,sorting,sys_language_uid,title,price
        }
 }
 
@@ -106,6 +109,42 @@ page {
                                        }
                                }
                        }
+                       30 = CONTENT
+                       30 {
+                               if.isTrue.field = tx_irretutorial_1ncsv_hotels
+                               watcher.parentRecordField = tx_irretutorial_1ncsv_hotels
+                               table = tx_irretutorial_1ncsv_hotel
+                               select {
+                                       uidInList.data = field:tx_irretutorial_1ncsv_hotels
+                                       orderBy = sorting
+                                       # not including sys_language_uid lookup
+                                       # languageField = sys_language_uid
+                               }
+                               renderObj = CONTENT
+                               renderObj {
+                                       if.isTrue.field = offers
+                                       watcher.parentRecordField = offers
+                                       table = tx_irretutorial_1ncsv_offer
+                                       select {
+                                               uidInList.data = field:offers
+                                               orderBy = sorting
+                                               # not including sys_language_uid lookup
+                                               # languageField = sys_language_uid
+                                       }
+                                       renderObj = CONTENT
+                                       renderObj {
+                                               if.isTrue.field = prices
+                                               watcher.parentRecordField = prices
+                                               table = tx_irretutorial_1ncsv_price
+                                               select {
+                                                       uidInList.data = field:prices
+                                                       orderBy = sorting
+                                                       # not including sys_language_uid lookup
+                                                       # languageField = sys_language_uid
+                                               }
+                                       }
+                               }
+                       }
                }
        }
 }
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/AbstractActionTestCase.php
new file mode 100644 (file)
index 0000000..5770620
--- /dev/null
@@ -0,0 +1,604 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\InlineRelationalRecordEditing\CommaSeparatedValue;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Oliver Hader <oliver.hader@typo3.org>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+require_once __DIR__ . '/../../../../../../core/Tests/Functional/DataHandling/AbstractDataHandlerActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase {
+
+       const VALUE_PageId = 89;
+       const VALUE_PageIdTarget = 90;
+       const VALUE_PageIdWebsite = 1;
+       const VALUE_ContentIdFirst = 297;
+       const VALUE_ContentIdLast = 298;
+       const VALUE_LanguageId = 1;
+       const VALUE_WorkspaceId = 1;
+
+       const TABLE_Page = 'pages';
+       const TABLE_Content = 'tt_content';
+       const TABLE_Hotel = 'tx_irretutorial_1ncsv_hotel';
+       const TABLE_Offer = 'tx_irretutorial_1ncsv_offer';
+
+       const FIELD_ContentHotel = 'tx_irretutorial_1ncsv_hotels';
+       const FIELD_HotelOffer = 'offers';
+
+       /**
+        * @var string
+        */
+       protected $dataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/';
+
+       /**
+        * @var array
+        */
+       protected $coreExtensionsToLoad = array(
+               'version',
+               'workspaces',
+       );
+
+       public function setUp() {
+               parent::setUp();
+               $this->importScenarioDataSet('LiveDefaultPages');
+               $this->importScenarioDataSet('LiveDefaultElements');
+
+               $this->setUpFrontendRootPage(1, array('typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts'));
+       }
+
+       /**
+        * Parent content records
+        */
+
+       /**
+        * @test
+        */
+       public function createParentContentRecord() {
+               $this->actionService->createNewRecord(self::TABLE_Content, self::VALUE_PageId, array('header' => 'Testing #1'));
+               $this->assertAssertionDataSet('createParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentContentRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, array('header' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+
+               // @todo Cannot direct select workspace version due to frontend SQL query
+               // SELECT * FROM tx_irretutorial_1ncsv_hotel
+               // WHERE tx_irretutorial_1ncsv_hotel.uid=6 AND tx_irretutorial_1ncsv_hotel.pid IN (89)
+               // AND tx_irretutorial_1ncsv_hotel.deleted=0 AND (tx_irretutorial_1ncsv_hotel.t3ver_wsid=0 OR tx_irretutorial_1ncsv_hotel.t3ver_wsid=1)
+               // AND tx_irretutorial_1ncsv_hotel.pid<>-1 ORDER BY sorting
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function deleteParentContentRecord() {
+               $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('deleteParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        */
+       public function deleteParentContentRecordAndDiscardDeletedParentRecord() {
+               $newTableIds = $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $versionedDeletedContentId = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+               $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedDeletedContentId);
+               $this->assertAssertionDataSet('deleteParentContentRecordAndDiscardDeletedParentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        */
+       public function copyParentContentRecord() {
+               $newTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageId);
+               $this->assertAssertionDataSet('copyParentContentRecord');
+
+               $newContentId = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function localizeParentContentRecord() {
+               $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+               $this->assertAssertionDataSet('localizeParentContentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('[Translate to Dansk:] Hotel #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function changeParentContentRecordSorting() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('changeParentContentRecordSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+
+               // @todo Cannot direct select workspace version due to frontend SQL query
+               // SELECT * FROM tx_irretutorial_1ncsv_hotel
+               // WHERE tx_irretutorial_1ncsv_hotel.uid=6 AND tx_irretutorial_1ncsv_hotel.pid IN (89)
+               // AND tx_irretutorial_1ncsv_hotel.deleted=0 AND (tx_irretutorial_1ncsv_hotel.t3ver_wsid=0 OR tx_irretutorial_1ncsv_hotel.t3ver_wsid=1)
+               // AND tx_irretutorial_1ncsv_hotel.pid<>-1 ORDER BY sorting
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function moveParentContentRecordToDifferentPage() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+               $this->assertAssertionDataSet('moveParentContentRecordToDifferentPage');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+
+               // @todo Workspace child records gets lost due to core bug
+               /*
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1')
+               );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function moveParentContentRecordToDifferentPageAndChangeSorting() {
+               $this->markTestSkipped('Something seems to be wrong here...');
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('moveParentContentRecordToDifferentPageAndChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #2', 'Regular Element #1'));
+
+               // @todo Cannot direct select workspace version due to frontend SQL query
+               // SELECT * FROM tx_irretutorial_1ncsv_hotel
+               // WHERE tx_irretutorial_1ncsv_hotel.uid=6 AND tx_irretutorial_1ncsv_hotel.pid IN (89)
+               // AND tx_irretutorial_1ncsv_hotel.deleted=0 AND (tx_irretutorial_1ncsv_hotel.t3ver_wsid=0 OR tx_irretutorial_1ncsv_hotel.t3ver_wsid=1)
+               // AND tx_irretutorial_1ncsv_hotel.pid<>-1 ORDER BY sorting
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1')
+                       );
+               */
+       }
+
+       /**
+        * Page records
+        */
+
+       /**
+        * @test
+        */
+       public function modifyPageRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Page, self::VALUE_PageId, array('title' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyPageRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Page, 'title', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function deletePageRecord() {
+               $this->actionService->deleteRecord(self::TABLE_Page, self::VALUE_PageId);
+               $this->assertAssertionDataSet('deletePageRecord');
+
+               $response = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId, FALSE);
+               $this->assertContains('RuntimeException', $response->getError());
+       }
+
+       /**
+        * @test
+        */
+       public function copyPageRecord() {
+               $newTableIds = $this->actionService->copyRecord(self::TABLE_Page, self::VALUE_PageId, self::VALUE_PageIdTarget);
+               $this->assertAssertionDataSet('copyPageRecord');
+
+               $newPageId = $newTableIds[self::TABLE_Page][self::VALUE_PageId];
+               $responseContent = $this->getFrontendResponse($newPageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2', 'Hotel #1'));
+       }
+
+       /**
+        * IRRE Child Records
+        */
+
+       /**
+        * @test
+        */
+       public function createParentContentRecordWithHotelAndOfferChildRecords() {
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $this->assertAssertionDataSet('createParentContentRecordWithHotelAndOfferChildRecords');
+
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+
+               // @todo Shadow fields are not correct on the new placeholder
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', 'Hotel #1'
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function createAndCopyParentContentRecordWithHotelAndOfferChildRecords() {
+               // @todo Copying the new child records is broken in the Core
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $newHotelId = $newTableIds[self::TABLE_Hotel][0];
+               $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, $newContentId, self::VALUE_PageId);
+               $this->assertAssertionDataSet('createAndCopyParentContentRecordWithHotelAndOfferChildRecords');
+
+               $copiedContentId = $copiedTableIds[self::TABLE_Content][$newContentId];
+               $copiedHotelId = $copiedTableIds[self::TABLE_Hotel][$newHotelId];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1 (copy 1)');
+
+               // @todo Shadow fields are not correct on the new placeholder
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . $newContentId, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', 'Hotel #1'
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . $copiedContentId, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', 'Hotel #1'
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Hotel . ':' . $copiedHotelId, self::FIELD_HotelOffer,
+                               self::TABLE_Offer, 'title', 'Offer #1'
+                       );
+                */
+       }
+
+       /**
+        * @test
+        */
+       public function createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord() {
+               // @todo Copying the new child records is broken in the Core
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds['tt_content'][0];
+               $copiedTableIds = $this->actionService->copyRecord(self::TABLE_Content, $newContentId, self::VALUE_PageId);
+               $copiedContentId = $copiedTableIds[self::TABLE_Content][$newContentId];
+               $versionedCopiedContentId = $this->actionService->getDataHander()->getAutoVersionId(self::TABLE_Content, $copiedContentId);
+               $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedCopiedContentId);
+               $this->assertAssertionDataSet('createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1 (copy 1)');
+       }
+
+       /**
+        * @test
+        */
+       public function createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords() {
+               // @todo Localizing the new child records is broken in the Core
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $newHotelId = $newTableIds[self::TABLE_Hotel][0];
+               $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $newContentId, self::VALUE_LanguageId);
+               $this->assertAssertionDataSet('createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords');
+
+               $localizedContentId = $localizedTableIds[self::TABLE_Content][$newContentId];
+               $localizedHotelId = $localizedTableIds[self::TABLE_Hotel][$newHotelId];
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', '[Translate to Dansk:] Testing #1');
+
+               // @todo Does not work since children don't point to live-default record
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . $localizedContentId, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', '[Translate to Dansk:] Hotel #1'
+                       );
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Hotel . ':' . $localizedHotelId, self::FIELD_HotelOffer,
+                               self::TABLE_Offer, 'title', '[Translate to Dansk:] Offer #1'
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord() {
+               // @todo Localizing the new child records is broken in the Core
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Offer => array('title' => 'Offer #1'),
+                               self::TABLE_Hotel => array('title' => 'Hotel #1', self::FIELD_HotelOffer => '__previousUid'),
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentHotel => '__previousUid'),
+                       )
+               );
+               $newContentId = $newTableIds[self::TABLE_Content][0];
+               $localizedTableIds = $this->actionService->localizeRecord(self::TABLE_Content, $newContentId, self::VALUE_LanguageId);
+               $localizedContentId = $localizedTableIds[self::TABLE_Content][$newContentId];
+               $versionedLocalizedContentId = $this->actionService->getDataHander()->getAutoVersionId(self::TABLE_Content, $localizedContentId);
+               $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $versionedLocalizedContentId);
+               $this->assertAssertionDataSet('createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', '[Translate to Dansk:] Testing #1');
+       }
+
+       /**
+        * @test
+        */
+       public function modifyOnlyHotelChildRecord() {
+               $this->actionService->modifyRecord(self::TABLE_Hotel, 4, array('title' => 'Testing #1'));
+               $this->assertAssertionDataSet('modifyOnlyHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Testing #1')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndChangeHotelChildRecordsSorting() {
+               $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, array(self::FIELD_ContentHotel => '4,3'));
+               $this->assertAssertionDataSet('modifyParentRecordAndChangeHotelChildRecordsSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+
+               // @todo Cannot direct select workspace version due to frontend SQL query
+               // SELECT * FROM tx_irretutorial_1ncsv_hotel
+               // WHERE tx_irretutorial_1ncsv_hotel.uid=6 AND tx_irretutorial_1ncsv_hotel.pid IN (89)
+               // AND tx_irretutorial_1ncsv_hotel.deleted=0 AND (tx_irretutorial_1ncsv_hotel.t3ver_wsid=0 OR tx_irretutorial_1ncsv_hotel.t3ver_wsid=1)
+               // AND tx_irretutorial_1ncsv_hotel.pid<>-1 ORDER BY sorting
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #2', 'Hotel #1')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordWithHotelChildRecord() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
+                       )
+               );
+               $this->assertAssertionDataSet('modifyParentRecordWithHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+
+               // @todo Cannot direct select workspace version due to frontend SQL query
+               // SELECT * FROM tx_irretutorial_1ncsv_hotel
+               // WHERE tx_irretutorial_1ncsv_hotel.uid=6 AND tx_irretutorial_1ncsv_hotel.pid IN (89)
+               // AND tx_irretutorial_1ncsv_hotel.deleted=0 AND (tx_irretutorial_1ncsv_hotel.t3ver_wsid=0 OR tx_irretutorial_1ncsv_hotel.t3ver_wsid=1)
+               // AND tx_irretutorial_1ncsv_hotel.pid<>-1 ORDER BY sorting
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1', 'Testing #1')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
+                       )
+               );
+               $modifiedContentId = $this->actionService->getDataHander()->getAutoVersionId(self::TABLE_Content, self::VALUE_ContentIdFirst);
+               $this->actionService->clearWorkspaceRecord(self::TABLE_Content, $modifiedContentId);
+               $this->assertAssertionDataSet('modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Testing #1')
+                       // @todo Discarding the parent record should discard the child records as well
+                       // self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+               /*
+                       $this->assertResponseContentStructureDoesNotHaveRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', 'Testing #1'
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => 4, 'title' => 'Testing #1'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdFirst, self::FIELD_ContentHotel => '3,4'),
+                       )
+               );
+               $modifiedContentId = $this->actionService->getDataHander()->getAutoVersionId(self::TABLE_Content, self::VALUE_ContentIdFirst);
+               $modifiedHotelId = $this->actionService->getDataHander()->getAutoVersionId(self::TABLE_Hotel, 4);
+               $this->actionService->clearWorkspaceRecords(
+                               array(
+                                       self::TABLE_Hotel => array($modifiedHotelId),
+                                       self::TABLE_Content => array($modifiedContentId),
+                               )
+               );
+               $this->assertAssertionDataSet('modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+               );
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndAddHotelChildRecord() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Hotel => array('uid' => '__NEW', 'title' => 'Hotel #2'),
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdLast, self::FIELD_ContentHotel => '5,__previousUid'),
+                       )
+               );
+               $this->assertAssertionDataSet('modifyParentRecordAndAddHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+
+               // @todo Child record cannot be selected since they do not point to the live record
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                               self::TABLE_Hotel, 'title', array('Hotel #1', 'Hotel #2')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        */
+       public function modifyParentRecordAndDeleteHotelChildRecord() {
+               $this->actionService->modifyRecord(
+                       self::TABLE_Content,
+                       self::VALUE_ContentIdFirst,
+                       array(self::FIELD_ContentHotel => '3'),
+                       array(self::TABLE_Hotel => array(4))
+               );
+               $this->assertAssertionDataSet('modifyParentRecordAndDeleteHotelChildRecord');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #1'
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentHotel,
+                       self::TABLE_Hotel, 'title', 'Hotel #2'
+               );
+       }
+
+}
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/changeParentContentRecordSorting.csv
new file mode 100644 (file)
index 0000000..e05c267
--- /dev/null
@@ -0,0 +1,37 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,1,4,0,297,0,"Regular Element #1",0,"6,7"
+,300,89,768,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]",,
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","9,10"
+,7,-1,128,0,0,0,1,0,0,4,0,"Hotel #2",11
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","14,15,16"
+,10,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","17,18"
+,11,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",19
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,15,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,16,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,17,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,18,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
+,19,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyPageRecord.csv
new file mode 100644 (file)
index 0000000..37c11f7
--- /dev/null
@@ -0,0 +1,50 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
+,91,90,256,0,1,1,0,0,0,Relations
+,92,-1,256,0,1,-1,0,91,0,Relations
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,91,256,0,0,0,1,1,0,0,0,"Regular Element #2",,
+,300,-1,256,0,0,0,1,-1,0,299,0,"Regular Element #2",0,6
+,301,91,128,0,0,0,1,1,0,0,0,"Regular Element #1",,
+,302,-1,128,0,0,0,1,-1,0,301,0,"Regular Element #1",0,"7,8"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,91,64,0,0,0,0,0,0,0,0,"Hotel #1",9
+,7,91,256,0,0,0,0,0,0,0,0,"Hotel #1","10,11"
+,8,91,128,0,0,0,0,0,0,0,0,"Hotel #2",12
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,91,32,0,0,0,0,0,0,0,0,"Offer #1.1",14
+,10,91,256,0,0,0,0,0,0,0,0,"Offer #1.1","15,16,17"
+,11,91,128,0,0,0,0,0,0,0,0,"Offer #1.2","18,19"
+,12,91,64,0,0,0,0,0,0,0,0,"Offer #2.1",20
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,91,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,15,91,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,16,91,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,17,91,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,18,91,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,19,91,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,20,91,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/copyParentContentRecord.csv
new file mode 100644 (file)
index 0000000..e67567a
--- /dev/null
@@ -0,0 +1,29 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Regular Element #2 (copy 1)",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Regular Element #2 (copy 1)",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,64,0,0,0,0,0,0,0,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..827ba8e
--- /dev/null
@@ -0,0 +1,34 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,7
+,301,89,64,0,0,0,1,1,0,0,0,"Testing #1 (copy 1)",,
+,302,-1,64,0,0,0,1,-1,0,301,0,"Testing #1 (copy 1)",0,8
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #1",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #1",10
+,8,89,32,0,0,0,1,-1,0,6,0,"Hotel #1",11
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,1,1,0,0,0,"Offer #1",
+,10,-1,16,0,0,0,1,-1,0,9,0,"Offer #1",
+,11,89,16,0,0,0,1,-1,0,9,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndCopyParentContentRecordWithHotelAndOfferChildRecordsAndDiscardCopiedParentRecord.csv
new file mode 100644 (file)
index 0000000..06473ec
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,7
+,301,89,1000000000,1,0,0,0,1,0,0,0,"Testing #1 (copy 1)",,
+,302,-1,1000000000,1,0,0,0,-1,0,301,0,"Testing #1 (copy 1)",0,8
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #1",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #1",10
+,8,89,32,0,0,0,1,-1,0,6,0,"Hotel #1",11
+,9,-1,32,0,0,0,1,2,0,8,0,"Hotel #1",12
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,1,1,0,0,0,"Offer #1",
+,10,-1,16,0,0,0,1,-1,0,9,0,"Offer #1",
+,11,89,16,0,0,0,1,-1,0,9,0,"Offer #1",
+,12,-1,16,0,0,0,1,2,0,11,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..75ce1ab
--- /dev/null
@@ -0,0 +1,34 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,7
+,301,89,192,0,1,299,1,1,0,0,0,"[Translate to Dansk:] Testing #1",,
+,302,-1,192,0,1,299,1,-1,0,301,0,"[Translate to Dansk:] Testing #1",0,8
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #1",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #1",10
+,8,89,48,0,1,7,1,1,0,0,0,"[Translate to Dansk:] Hotel #1",
+,9,-1,48,0,1,7,1,-1,0,8,0,"[Translate to Dansk:] Hotel #1",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,1,1,0,0,0,"Offer #1",
+,10,-1,16,0,0,0,1,-1,0,9,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createAndLocalizeParentContentRecordWithHotelAndOfferChildRecordsAndDiscardLocalizedParentRecord.csv
new file mode 100644 (file)
index 0000000..a9d31e9
--- /dev/null
@@ -0,0 +1,34 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,7
+,301,89,1000000000,1,1,299,0,1,0,0,0,"[Translate to Dansk:] Testing #1",,
+,302,-1,1000000000,1,1,299,0,-1,0,301,0,"[Translate to Dansk:] Testing #1",0,8
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #1",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #1",10
+,8,89,1000000000,1,1,7,0,1,0,0,0,"[Translate to Dansk:] Hotel #1",
+,9,-1,1000000000,1,1,7,0,-1,0,8,0,"[Translate to Dansk:] Hotel #1",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,1,1,0,0,0,"Offer #1",
+,10,-1,16,0,0,0,1,-1,0,9,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecord.csv
new file mode 100644 (file)
index 0000000..39081eb
--- /dev/null
@@ -0,0 +1,6 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/createParentContentRecordWithHotelAndOfferChildRecords.csv
new file mode 100644 (file)
index 0000000..656034c
--- /dev/null
@@ -0,0 +1,30 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,128,0,0,0,1,1,0,0,0,"Testing #1",,
+,300,-1,128,0,0,0,1,-1,0,299,0,"Testing #1",,7
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #1",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #1",10
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,89,16,0,0,0,1,1,0,0,0,"Offer #1",
+,10,-1,16,0,0,0,1,-1,0,9,0,"Offer #1",
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deletePageRecord.csv
new file mode 100644 (file)
index 0000000..c4b2bac
--- /dev/null
@@ -0,0 +1,31 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
+,91,-1,256,0,1,2,0,89,0,Relations
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecord.csv
new file mode 100644 (file)
index 0000000..bf1b7cc
--- /dev/null
@@ -0,0 +1,28 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,512,0,0,0,1,2,0,298,0,"Regular Element #2",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,64,0,0,0,1,2,0,5,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,32,0,0,0,1,2,0,8,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,4,0,0,0,1,2,0,13,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecordAndDiscardDeletedParentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/deleteParentContentRecordAndDiscardDeletedParentRecord.csv
new file mode 100644 (file)
index 0000000..18d7724
--- /dev/null
@@ -0,0 +1,24 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/localizeParentContentRecord.csv
new file mode 100644 (file)
index 0000000..4fa119f
--- /dev/null
@@ -0,0 +1,28 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,89,768,0,1,298,1,1,0,0,0,"[Translate to Dansk:] Regular Element #2",,
+,300,-1,768,0,1,298,1,-1,0,299,0,"[Translate to Dansk:] Regular Element #2",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,96,0,1,5,1,1,0,0,0,"[Translate to Dansk:] Hotel #1",
+,7,-1,96,0,1,5,1,-1,0,6,0,"[Translate to Dansk:] Hotel #1",
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyOnlyHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..56c78fd
--- /dev/null
@@ -0,0 +1,27 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,128,0,0,0,1,0,0,4,0,"Testing #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyPageRecord.csv
new file mode 100644 (file)
index 0000000..07c6f4c
--- /dev/null
@@ -0,0 +1,31 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
+,91,-1,256,0,1,0,0,89,0,"Testing #1"
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentContentRecord.csv
new file mode 100644 (file)
index 0000000..a3fc4e4
--- /dev/null
@@ -0,0 +1,28 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,512,0,0,0,1,0,0,298,0,"Testing #1",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,64,0,0,0,1,0,0,5,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,32,0,0,0,1,0,0,8,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,4,0,0,0,1,0,0,13,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndAddHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..0a12178
--- /dev/null
@@ -0,0 +1,30 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,512,0,0,0,1,0,0,298,0,"Regular Element #2",0,"8,7"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,89,32,0,0,0,1,1,0,0,0,"Hotel #2",
+,7,-1,32,0,0,0,1,-1,0,6,0,"Hotel #2",
+,8,-1,64,0,0,0,1,0,0,5,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,32,0,0,0,1,0,0,8,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,4,0,0,0,1,0,0,13,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndChangeHotelChildRecordsSorting.csv
new file mode 100644 (file)
index 0000000..261dce8
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,1,0,0,297,0,"Regular Element #1",0,"7,6"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","9,10"
+,7,-1,128,0,0,0,1,0,0,4,0,"Hotel #2",11
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","14,15,16"
+,10,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","17,18"
+,11,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",19
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,15,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,16,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,17,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,18,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
+,19,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordAndDeleteHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..82879c4
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,1,0,0,297,0,"Regular Element #1",0,6
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","9,10"
+,7,-1,128,0,0,0,1,2,0,4,0,"Hotel #2",11
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","14,15,16"
+,10,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","17,18"
+,11,-1,64,0,0,0,1,2,0,7,0,"Offer #2.1",19
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,15,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,16,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,17,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,18,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
+,19,-1,8,0,0,0,1,2,0,12,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecord.csv
new file mode 100644 (file)
index 0000000..20523d5
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,1,0,0,297,0,"Regular Element #1",0,"7,6"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,128,0,0,0,1,0,0,4,0,"Testing #1",9
+,7,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","10,11"
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",14
+,10,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","15,16,17"
+,11,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","18,19"
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
+,15,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,16,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,17,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,18,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,19,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardAllModifiedRecords.csv
new file mode 100644 (file)
index 0000000..129c33b
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,0,0,0,297,0,"Regular Element #1",0,"7,6"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,128,0,0,0,0,0,0,4,0,"Testing #1",9
+,7,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","10,11"
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",14
+,10,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","15,16,17"
+,11,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","18,19"
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
+,15,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,16,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,17,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,18,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,19,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/modifyParentRecordWithHotelChildRecordAndDiscardModifiedParentRecord.csv
new file mode 100644 (file)
index 0000000..4d1c8e2
--- /dev/null
@@ -0,0 +1,36 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,256,0,0,0,0,0,0,297,0,"Regular Element #1",0,"7,6"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,128,0,0,0,1,0,0,4,0,"Testing #1",9
+,7,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","10,11"
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",14
+,10,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","15,16,17"
+,11,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","18,19"
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
+,15,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,16,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,17,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,18,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,19,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPage.csv
new file mode 100644 (file)
index 0000000..b3eebab
--- /dev/null
@@ -0,0 +1,29 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,512,0,0,0,1,4,0,298,0,"Regular Element #2",0,6
+,300,90,256,0,0,0,1,3,0,0,298,"[MOVE-TO PLACEHOLDER for #298, WS#1]",,
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,64,0,0,0,1,0,0,5,0,"Hotel #1",9
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,32,0,0,0,1,0,0,8,0,"Offer #1.1",14
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,4,0,0,0,1,0,0,13,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Assertion/moveParentContentRecordToDifferentPageAndChangeSorting.csv
new file mode 100644 (file)
index 0000000..cff7194
--- /dev/null
@@ -0,0 +1,42 @@
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,5
+,299,-1,512,0,0,0,1,4,0,298,0,"Regular Element #2",0,6
+,300,90,256,0,0,0,1,3,0,0,298,"[MOVE-TO PLACEHOLDER for #298, WS#1]",,
+,301,-1,256,0,0,0,1,4,0,297,0,"Regular Element #1",0,"7,8"
+,302,90,512,0,0,0,1,3,0,0,297,"[MOVE-TO PLACEHOLDER for #297, WS#1]",,
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2",7
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1",8
+,6,-1,64,0,0,0,1,0,0,5,0,"Hotel #1",9
+,7,-1,256,0,0,0,1,0,0,3,0,"Hotel #1","10,11"
+,8,-1,128,0,0,0,1,0,0,4,0,"Hotel #2",12
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1",12
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1",13
+,9,-1,32,0,0,0,1,0,0,8,0,"Offer #1.1",14
+,10,-1,256,0,0,0,1,0,0,5,0,"Offer #1.1","15,16,17"
+,11,-1,128,0,0,0,1,0,0,6,0,"Offer #1.2","18,19"
+,12,-1,64,0,0,0,1,0,0,7,0,"Offer #2.1",20
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,14,-1,4,0,0,0,1,0,0,13,0,"Price #1.1.1"
+,15,-1,256,0,0,0,1,0,0,7,0,"Price #1.1.1"
+,16,-1,128,0,0,0,1,0,0,8,0,"Price #1.1.2"
+,17,-1,64,0,0,0,1,0,0,9,0,"Price #1.1.3"
+,18,-1,32,0,0,0,1,0,0,10,0,"Price #1.2.1"
+,19,-1,16,0,0,0,1,0,0,11,0,"Price #1.2.2"
+,20,-1,8,0,0,0,1,0,0,12,0,"Price #2.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultElements.csv
new file mode 100644 (file)
index 0000000..3bfb765
--- /dev/null
@@ -0,0 +1,35 @@
+sys_workspace
+,uid,pid,deleted,title,adminusers,members,reviewers,db_mountpoints,file_mountpoints,freeze,live_edit,vtypes,disable_autocreate,swap_modes,publish_access,custom_stages,stagechg_notification,edit_notification_mode,edit_notification_defaults,edit_allow_notificaton_settings,publish_notification_mode,publish_notification_defaults,publish_allow_notificaton_settings
+,1,0,0,"Workspace #1",,,,,,0,0,0,0,0,0,0,0,0,,0,0,,0
+,2,0,0,"Workspace #2",,,,,,0,0,0,0,0,0,0,0,0,,0,0,,0
+sys_workspace_stage
+,uid,pid,tstamp,deleted,sorting,title,responsible_persons,default_mailcomment,parentid,parenttable,notification_mode,notification_defaults,allow_notificaton_settings
+,1,0,1290048921,0,1,"Stage 1",be_users_3,,1,sys_workspace,0,,0
+"sys_language",,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image,tx_irretutorial_1ncsv_hotels
+,297,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",,"3,4"
+,298,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",,"5"
+tx_irretutorial_1ncsv_hotel
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,offers
+,3,89,256,0,0,0,0,0,0,0,0,"Hotel #1","5,6"
+,4,89,128,0,0,0,0,0,0,0,0,"Hotel #2","7"
+,5,89,64,0,0,0,0,0,0,0,0,"Hotel #1","8"
+tx_irretutorial_1ncsv_offer
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title,prices
+,5,89,256,0,0,0,0,0,0,0,0,"Offer #1.1","7,8,9"
+,6,89,128,0,0,0,0,0,0,0,0,"Offer #1.2","10,11"
+,7,89,64,0,0,0,0,0,0,0,0,"Offer #2.1","12"
+,8,89,32,0,0,0,0,0,0,0,0,"Offer #1.1","13"
+tx_irretutorial_1ncsv_price
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,7,89,256,0,0,0,0,0,0,0,0,"Price #1.1.1"
+,8,89,128,0,0,0,0,0,0,0,0,"Price #1.1.2"
+,9,89,64,0,0,0,0,0,0,0,0,"Price #1.1.3"
+,10,89,32,0,0,0,0,0,0,0,0,"Price #1.2.1"
+,11,89,16,0,0,0,0,0,0,0,0,"Price #1.2.2"
+,12,89,8,0,0,0,0,0,0,0,0,"Price #2.1.1"
+,13,89,4,0,0,0,0,0,0,0,0,"Price #1.1.1"
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/DataSet/Scenario/LiveDefaultPages.csv
new file mode 100644 (file)
index 0000000..17b04d4
--- /dev/null
@@ -0,0 +1,6 @@
+pages
+,uid,pid,sorting,deleted,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,title
+,1,0,256,0,0,0,0,0,0,FunctionalTest
+,88,1,256,0,0,0,0,0,0,DataHandlerTest
+,89,88,256,0,0,0,0,0,0,Relations
+,90,88,512,0,0,0,0,0,0,Target
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/WorkspaceActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/InlineRelationalRecordEditing/CommaSeparatedValue/WorkspaceActionTest.php
new file mode 100644 (file)
index 0000000..b11fab5
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\InlineRelationalRecordEditing\CommaSeparatedValue;
+
+/***************************************************************
+ * Copyright notice
+ *
+ * (c) 2014 Oliver Hader <oliver.hader@typo3.org>
+ * All rights reserved
+ *
+ * This script is part of the TYPO3 project. The TYPO3 project is
+ * free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * The GNU General Public License can be found at
+ * http://www.gnu.org/copyleft/gpl.html.
+ *
+ * This script is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * This copyright notice MUST APPEAR in all copies of the script!
+ ***************************************************************/
+
+require_once dirname(__FILE__) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class WorkspaceActionTest extends AbstractActionTestCase {
+
+       public function setUp() {
+               parent::setUp();
+               $this->backendUser->workspace = self::VALUE_WorkspaceId;
+       }
+
+}