[TASK] Integrate functional DataHandler tests for FAL 16/30516/6
authorOliver Hader <oliver@typo3.org>
Wed, 11 Jun 2014 11:06:41 +0000 (13:06 +0200)
committerOliver Hader <oliver.hader@typo3.org>
Thu, 12 Jun 2014 16:45:59 +0000 (18:45 +0200)
The functional frontend tests are extended with basic FAL
use-cases in the live workspaces, as well as for modifying,
publishing single records and publishing all records in a
particular workspaces scenario.

The frontend is tested by using the TypoScript FILES cObject.

Resolves: #59276
Releases: 6.2
Change-Id: I3a1e59f70015b1168e4f29458c8d6ff77c0b3dcf
Reviewed-on: https://review.typo3.org/30516
Reviewed-by: Oliver Hader
Tested-by: Oliver Hader
61 files changed:
typo3/sysext/core/Tests/Functional/DataHandling/AbstractDataHandlerActionTestCase.php
typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv [new file with mode: 0644]
typo3/sysext/core/Tests/Functional/Fixtures/sys_file_storage.xml [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/ReferenceIndex.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/ActionTest.php [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/changeContentSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/copyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/createContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/deleteContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/localizeContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNAddFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteAllFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/ActionTest.php [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/changeContentSorting.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/copyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/createContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/deleteContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/localizeContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContent.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNAddFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteAllFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentWFileReference.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPage.csv [new file with mode: 0644]
typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPageNChangeSorting.csv [new file with mode: 0644]

index bf70b3f..28a5764 100644 (file)
@@ -354,29 +354,52 @@ abstract class AbstractDataHandlerActionTestCase extends \TYPO3\CMS\Core\Tests\F
         * @param string $structureFieldName
         * @param string $tableName
         * @param string $fieldName
+        * @param bool $strict
         * @param string|array $values
         */
-       protected function assertResponseContentStructureHasRecords(ResponseContent $responseContent, $structureRecordIdentifier, $structureFieldName, $tableName, $fieldName, $values) {
+       protected function assertResponseContentStructureHasRecords(ResponseContent $responseContent, $structureRecordIdentifier, $structureFieldName, $tableName, $fieldName, $values, $strict = FALSE) {
                $nonMatchingVariants = array();
+               $remainingRecordVariants = array();
 
                foreach ($responseContent->findStructures($structureRecordIdentifier, $structureFieldName) as $path => $structure) {
+                       $remainingRecords = array();
                        $nonMatchingValues = $this->getNonMatchingValuesFrontendResponseRecords($structure, $tableName, $fieldName, $values);
 
-                       if (empty($nonMatchingValues)) {
+                       if ($strict) {
+                               $remainingRecords = $this->getRemainingFrontendResponseRecords($structure, $tableName, $fieldName, $values);
+                       }
+
+                       if (empty($nonMatchingValues) && (!$strict || empty($remainingRecords))) {
                                // Increase assertion counter
                                $this->assertEmpty($nonMatchingValues);
                                return;
                        }
 
-                       $nonMatchingVariants[$path] = $nonMatchingValues;
+                       if (!empty($nonMatchingValues)) {
+                               $nonMatchingVariants[$path] = $nonMatchingValues;
+                       }
+                       if ($strict && !empty($remainingRecords)) {
+                               $remainingRecordVariants[$path] = $remainingRecords;
+                       }
                }
 
-               $nonMatchingMessage = '';
-               foreach ($nonMatchingVariants as $path => $nonMatchingValues) {
-                       $nonMatchingMessage .= '* ' . $path . ': ' . implode(', ', $nonMatchingValues);
+               $failureMessage = '';
+
+               if (!empty($nonMatchingVariants)) {
+                       $failureMessage .= 'Could not assert all values for "' . $tableName . '.' . $fieldName . '"' . LF;
+                       foreach ($nonMatchingVariants as $path => $nonMatchingValues) {
+                               $failureMessage .= '* ' . $path . ': ' . implode(', ', $nonMatchingValues) . LF;
+                       }
+               }
+
+               if (!empty($remainingRecordVariants)) {
+                       $failureMessage .= 'Found remaining records for "' . $tableName . '.' . $fieldName . '"' . LF;
+                       foreach ($remainingRecordVariants as $path => $remainingRecords) {
+                               $failureMessage .= '* ' . $path . ': ' . implode(', ', array_keys($remainingRecords)) . LF;
+                       }
                }
 
-               $this->fail('Could not assert all values for "' . $tableName . '.' . $fieldName . '"' . LF . $nonMatchingMessage);
+               $this->fail($failureMessage);
        }
 
        /**
@@ -485,4 +508,35 @@ abstract class AbstractDataHandlerActionTestCase extends \TYPO3\CMS\Core\Tests\F
                return $values;
        }
 
+       /**
+        * @param string|array $data
+        * @param string $tableName
+        * @param string $fieldName
+        * @param string|array $values
+        * @return array
+        */
+       protected function getRemainingFrontendResponseRecords($data, $tableName, $fieldName, $values) {
+               if (empty($data) || !is_array($data)) {
+                       $this->fail('Frontend Response data does not have any records');
+               }
+
+               if (is_string($values)) {
+                       $values = array($values);
+               }
+
+               foreach ($data as $recordIdentifier => $recordData) {
+                       if (strpos($recordIdentifier, $tableName . ':') !== 0) {
+                               unset($data[$recordIdentifier]);
+                               continue;
+                       }
+
+                       if (($foundValueIndex = array_search($recordData[$fieldName], $values)) !== FALSE) {
+                               unset($values[$foundValueIndex]);
+                               unset($data[$recordIdentifier]);
+                       }
+               }
+
+               return $data;
+       }
+
 }
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php
new file mode 100644 (file)
index 0000000..26f4d1c
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL;
+
+/***************************************************************
+ * 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(__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 = 330;
+       const VALUE_ContentIdLast = 331;
+       const VALUE_FileIdFirst = 1;
+       const VALUE_FileIdLast = 21;
+       const VALUE_LanguageId = 1;
+
+       const VALUE_FileReferenceContentFirstFileFirst = 126;
+       const VALUE_FileReferenceContentFirstFileLast = 127;
+       const VALUE_FileReferenceContentLastFileLast = 128;
+       const VALUE_FileReferenceContentLastFileFirst = 129;
+
+       const TABLE_Page = 'pages';
+       const TABLE_Content = 'tt_content';
+       const TABLE_File = 'sys_file';
+       const TABLE_FileMetadata = 'sys_file_metadata';
+       const TABLE_FileReference = 'sys_file_reference';
+
+       const FIELD_ContentImage = 'image';
+       const FIELD_FileReferenceImage = 'uid_local';
+
+       /**
+        * @var string
+        */
+       protected $scenarioDataSetDirectory = 'typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/';
+
+       public function setUp() {
+               parent::setUp();
+               $this->importScenarioDataSet('LiveDefaultPages');
+               $this->importScenarioDataSet('LiveDefaultElements');
+               $this->importDataSet(ORIGINAL_ROOT . 'typo3/sysext/core/Tests/Functional/Fixtures/sys_file_storage.xml');
+
+               $this->setUpFrontendRootPage(1, array('typo3/sysext/core/Tests/Functional/Fixtures/Frontend/JsonRenderer.ts'));
+               $this->backendUser->workspace = 0;
+       }
+
+       /**
+        * Content records
+        */
+
+       /**
+        * @see DataSet/Assertion/modifyContentRecord.csv
+        */
+       public function modifyContent() {
+               $this->actionService->modifyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, array('header' => 'Testing #1'));
+       }
+
+       /**
+        * @see DataSet/Assertion/deleteContentRecord.csv
+        */
+       public function deleteContent() {
+               $this->actionService->deleteRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+       }
+
+       /**
+        * @see DataSet/Assertion/copyContentRecord.csv
+        */
+       public function copyContent() {
+               $newTableIds = $this->actionService->copyRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageId);
+               $this->recordIds['copiedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+       }
+
+       /**
+        * @see DataSet/Assertion/localizeContentRecord.csv
+        */
+       public function localizeContent() {
+               $newTableIds = $this->actionService->localizeRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_LanguageId);
+               $this->recordIds['localizedContentId'] = $newTableIds[self::TABLE_Content][self::VALUE_ContentIdLast];
+       }
+
+       /**
+        * @see DataSet/Assertion/changeContentRecordSorting.csv
+        */
+       public function changeContentSorting() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+       }
+
+       /**
+        * @see DataSet/Assertion/moveContentRecordToDifferentPage.csv
+        */
+       public function moveContentToDifferentPage() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+       }
+
+       /**
+        * @see DataSet/Assertion/moveContentRecordToDifferentPageAndChangeSorting.csv
+        */
+       public function moveContentToDifferentPageAndChangeSorting() {
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdLast, self::VALUE_PageIdTarget);
+               $this->actionService->moveRecord(self::TABLE_Content, self::VALUE_ContentIdFirst, -self::VALUE_ContentIdLast);
+       }
+
+       /**
+        * File references
+        */
+
+       public function createContentWithFileReference() {
+               $newTableIds = $this->actionService->createNewRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Content => array('header' => 'Testing #1', self::FIELD_ContentImage => '__nextUid'),
+                               self::TABLE_FileReference => array('title' => 'Image #1', self::FIELD_FileReferenceImage => self::VALUE_FileIdFirst),
+                       )
+               );
+               $this->recordIds['newContentId'] = $newTableIds[self::TABLE_Content][0];
+       }
+
+       public function modifyContentWithFileReference() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdLast, 'header' => 'Testing #1', self::FIELD_ContentImage => self::VALUE_FileReferenceContentLastFileLast . ',' . self::VALUE_FileReferenceContentLastFileFirst),
+                               self::TABLE_FileReference => array('uid' => self::VALUE_FileReferenceContentLastFileFirst, 'title' => 'Image #1'),
+                       )
+               );
+       }
+
+       public function modifyContentAndAddFileReference() {
+               $this->actionService->modifyRecords(
+                       self::VALUE_PageId,
+                       array(
+                               self::TABLE_Content => array('uid' => self::VALUE_ContentIdLast, self::FIELD_ContentImage => self::VALUE_FileReferenceContentLastFileLast . ',' . self::VALUE_FileReferenceContentLastFileFirst . ',__nextUid'),
+                               self::TABLE_FileReference => array('uid' => '__NEW', 'title' => 'Image #3', self::FIELD_FileReferenceImage => self::VALUE_FileIdFirst),
+                       )
+               );
+       }
+
+       public function modifyContentAndDeleteFileReference() {
+               $this->actionService->modifyRecord(
+                       self::TABLE_Content,
+                       self::VALUE_ContentIdLast,
+                       array(self::FIELD_ContentImage => self::VALUE_FileReferenceContentLastFileFirst),
+                       array(self::TABLE_FileReference => array(self::VALUE_FileReferenceContentLastFileLast))
+               );
+       }
+
+       public function modifyContentAndDeleteAllFileReference() {
+               $this->actionService->modifyRecord(
+                       self::TABLE_Content,
+                       self::VALUE_ContentIdLast,
+                       array(self::FIELD_ContentImage => ''),
+                       array(self::TABLE_FileReference => array(self::VALUE_FileReferenceContentLastFileFirst, self::VALUE_FileReferenceContentLastFileLast))
+               );
+       }
+
+}
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv
new file mode 100644 (file)
index 0000000..7817c87
--- /dev/null
@@ -0,0 +1,28 @@
+"sys_language",,,,,,,,,,,,,,,
+,"uid","pid","hidden","title","flag",,,,,,,,,,
+,1,0,0,"Dansk","dk",,,,,,,,,,
+,2,0,0,"Deutsch","de",,,,,,,,,,
+"sys_category",,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","title","parent","items",
+,28,0,256,0,0,0,0,0,0,0,0,"Category A",0,0,
+,29,0,512,0,0,0,0,0,0,0,0,"Category B",0,0,
+,30,0,768,0,0,0,0,0,0,0,0,"Category C",0,0,
+,31,0,1024,0,0,0,0,0,0,0,0,"Category A.A",28,0,
+sys_file
+,uid,pid,type,storage,identifier,extension,mime_type,name,sha1,size,creation_date,modification_date,missing,metadata,identifier_hash,folder_hash,last_indexed
+,1,0,2,1,/_migrated/pics/kasper-skarhoj1_01.jpeg,jpeg,image/jpeg,kasper-skarhoj1_01.jpeg,b841902021bbe23bd71e4a5b5b97626da7734b90,39056,1375080761,1374139442,0,0,2a4941658e4bd943048a234a5e1f305a1f736b10,f6e391567e01bdb14eac504413794a3bc1300abd,0
+,21,0,2,1,/_migrated/pics/typo3_image5_01.jpg,jpg,image/jpeg,typo3_image5_01.jpg,ce136877a22606a6e44ce9b1f8ed3be70c74e6ee,126872,1375080761,1374139442,0,0,9df04e41b37d2c29777ee64ced3f612b2422a02e,f6e391567e01bdb14eac504413794a3bc1300abd,0
+sys_file_metadata
+,uid,pid,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,file,title,width,height,description,alternative,categories
+,1,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0
+,21,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,"T3BOARD",,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,"Kasper",,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv
new file mode 100644 (file)
index 0000000..79e6fb6
--- /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,FAL
+,90,88,512,0,0,0,0,0,0,Target
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
new file mode 100644 (file)
index 0000000..9c30af7
--- /dev/null
@@ -0,0 +1,255 @@
+<?php
+namespace TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\Modify;
+
+/***************************************************************
+ * 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(__FILE__)) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class ActionTest extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\AbstractActionTestCase {
+
+       /**
+        * @var string
+        */
+       protected $assertionDataSetDirectory = 'typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/';
+
+       /**
+        * Content records
+        */
+
+       /**
+        * @test
+        * @see DataSet/Assertion/modifyContentRecord.csv
+        */
+       public function modifyContent() {
+               parent::modifyContent();
+               $this->assertAssertionDataSet('modifyContent');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/deleteContentRecord.csv
+        */
+       public function deleteContent() {
+               parent::deleteContent();
+               $this->assertAssertionDataSet('deleteContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/copyContentRecord.csv
+        */
+       public function copyContent() {
+               parent::copyContent();
+               $this->assertAssertionDataSet('copyContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2 (copy 1)');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['copiedContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/localizeContentRecord.csv
+        */
+       public function localizeContent() {
+               parent::localizeContent();
+               $this->assertAssertionDataSet('localizeContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
+
+               // @todo Values in sys_file_reference are not copied during localization...
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                               self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+                       );
+               */
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/changeContentRecordSorting.csv
+        */
+       public function changeContentSorting() {
+               parent::changeContentSorting();
+               $this->assertAssertionDataSet('changeContentSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPage.csv
+        */
+       public function moveContentToDifferentPage() {
+               parent::moveContentToDifferentPage();
+               $this->assertAssertionDataSet('moveContentToDifferentPage');
+
+               $responseContentSource = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentSource, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentSource, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $responseContentTarget = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentTarget, self::TABLE_Content, 'header', 'Regular Element #2');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentTarget, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPageAndChangeSorting.csv
+        */
+       public function moveContentToDifferentPageAndChangeSorting() {
+               parent::moveContentToDifferentPageAndChangeSorting();
+               $this->assertAssertionDataSet('moveContentToDifferentPageNChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD')
+               );
+       }
+
+       /**
+        * File references
+        */
+
+       /**
+        * @test
+        * @see DataSets/createContentWFileReference.csv
+        */
+       public function createContentWithFileReference() {
+               parent::createContentWithFileReference();
+               $this->assertAssertionDataSet('createContentWFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['newContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Image #1'
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentWFileReference.csv
+        */
+       public function modifyContentWithFileReference() {
+               parent::modifyContentWithFileReference();
+               $this->assertAssertionDataSet('modifyContentWFileReference');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'Image #1')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNAddFileReference.csv
+        */
+       public function modifyContentAndAddFileReference() {
+               parent::modifyContentAndAddFileReference();
+               $this->assertAssertionDataSet('modifyContentNAddFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper', 'Image #3')
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteFileReference.csv
+        */
+       public function modifyContentAndDeleteFileReference() {
+               parent::modifyContentAndDeleteFileReference();
+               $this->assertAssertionDataSet('modifyContentNDeleteFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'This is Kasper'
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Taken at T3BOARD'
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteAllFileReference.csv
+        */
+       public function modifyContentAndDeleteAllFileReference() {
+               parent::modifyContentAndDeleteAllFileReference();
+               $this->assertAssertionDataSet('modifyContentNDeleteAllFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper')
+               );
+       }
+
+}
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv
new file mode 100644 (file)
index 0000000..0a1f304
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,8,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,4,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,768,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv
new file mode 100644 (file)
index 0000000..4ea706e
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,32,0,0,0,0,0,0,0,0,21,332,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,89,16,0,0,0,0,0,0,0,0,1,332,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Regular Element #2 (copy 1)",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv
new file mode 100644 (file)
index 0000000..74ec62b
--- /dev/null
@@ -0,0 +1,12 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,1,332,tt_content,image,1,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Testing #1",1
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv
new file mode 100644 (file)
index 0000000..2d6b9ca
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv
new file mode 100644 (file)
index 0000000..d443aac
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,48,0,1,128,0,0,0,0,0,21,332,tt_content,image,1,sys_file,,,,,
+,131,89,24,0,1,129,0,0,0,0,0,1,332,tt_content,image,2,sys_file,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,768,0,1,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv
new file mode 100644 (file)
index 0000000..f0e4bf5
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv
new file mode 100644 (file)
index 0000000..13ebae0
--- /dev/null
@@ -0,0 +1,11 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,1,331,tt_content,image,3,sys_file,"Image #3",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",3
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv
new file mode 100644 (file)
index 0000000..6b1491e
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",0
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv
new file mode 100644 (file)
index 0000000..6877251
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,1,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",1
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv
new file mode 100644 (file)
index 0000000..7c84bb4
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv
new file mode 100644 (file)
index 0000000..b65c209
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,90,128,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,90,256,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/core/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv
new file mode 100644 (file)
index 0000000..4cedf45
--- /dev/null
@@ -0,0 +1,10 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,90,64,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,90,32,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,90,128,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,90,256,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,90,512,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/core/Tests/Functional/Fixtures/sys_file_storage.xml b/typo3/sysext/core/Tests/Functional/Fixtures/sys_file_storage.xml
new file mode 100644 (file)
index 0000000..b9a212e
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<dataset>
+       <sys_file_storage>
+               <uid>1</uid>
+               <pid>0</pid>
+               <name>fileadmin/ (auto-created)</name>
+               <driver>Local</driver>
+               <configuration><![CDATA[<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<T3FlexForms>
+       <data>
+               <sheet index="sDEF">
+                       <language index="lDEF">
+                               <field index="basePath">
+                                       <value index="vDEF">fileadmin/</value>
+                               </field>
+                               <field index="pathType">
+                                       <value index="vDEF">relative</value>
+                               </field>
+                               <field index="caseSensitive">
+                                       <value index="vDEF">1</value>
+                               </field>
+                       </language>
+               </sheet>
+       </data>
+</T3FlexForms>]]></configuration>
+               <is_browsable>1</is_browsable>
+               <is_public>1</is_public>
+               <is_writable>1</is_writable>
+               <is_online>1</is_online>
+       </sys_file_storage>
+</dataset>
\ No newline at end of file
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/AbstractActionTestCase.php
new file mode 100644 (file)
index 0000000..720a027
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL;
+
+/***************************************************************
+ * 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/FAL/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+abstract class AbstractActionTestCase extends \TYPO3\CMS\Core\Tests\Functional\DataHandling\FAL\AbstractActionTestCase {
+
+       const VALUE_WorkspaceId = 1;
+
+       /**
+        * @var string
+        */
+       protected $scenarioDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/';
+
+       /**
+        * @var array
+        */
+       protected $coreExtensionsToLoad = array(
+               'fluid',
+               'version',
+               'workspaces',
+       );
+
+       public function setUp() {
+               parent::setUp();
+               $this->importScenarioDataSet('ReferenceIndex');
+               $this->backendUser->workspace = self::VALUE_WorkspaceId;
+       }
+
+}
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultElements.csv
new file mode 100644 (file)
index 0000000..b089a13
--- /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",,,,,,,,,,
+"sys_category",,,,,,,,,,,,,,,
+,"uid","pid","sorting","deleted","sys_language_uid","l10n_parent","t3ver_wsid","t3ver_state","t3ver_stage","t3ver_oid","t3ver_move_id","title","parent","items",
+,28,0,256,0,0,0,0,0,0,0,0,"Category A",0,0,
+,29,0,512,0,0,0,0,0,0,0,0,"Category B",0,0,
+,30,0,768,0,0,0,0,0,0,0,0,"Category C",0,0,
+,31,0,1024,0,0,0,0,0,0,0,0,"Category A.A",28,0,
+sys_file
+,uid,pid,type,storage,identifier,extension,mime_type,name,sha1,size,creation_date,modification_date,missing,metadata,identifier_hash,folder_hash,last_indexed
+,1,0,2,1,/_migrated/pics/kasper-skarhoj1_01.jpeg,jpeg,image/jpeg,kasper-skarhoj1_01.jpeg,b841902021bbe23bd71e4a5b5b97626da7734b90,39056,1375080761,1374139442,0,0,2a4941658e4bd943048a234a5e1f305a1f736b10,f6e391567e01bdb14eac504413794a3bc1300abd,0
+,21,0,2,1,/_migrated/pics/typo3_image5_01.jpg,jpg,image/jpeg,typo3_image5_01.jpg,ce136877a22606a6e44ce9b1f8ed3be70c74e6ee,126872,1375080761,1374139442,0,0,9df04e41b37d2c29777ee64ced3f612b2422a02e,f6e391567e01bdb14eac504413794a3bc1300abd,0
+sys_file_metadata
+,uid,pid,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,file,title,width,height,description,alternative,categories
+,1,0,0,0,0,0,0,0,0,1,"Image Kasper",401,600,,,0
+,21,0,0,0,0,0,0,0,0,21,"Image T3BOARD",1024,683,,,0
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,"T3BOARD",,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,"Kasper",,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/LiveDefaultPages.csv
new file mode 100644 (file)
index 0000000..79e6fb6
--- /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,FAL
+,90,88,512,0,0,0,0,0,0,Target
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/ReferenceIndex.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/DataSet/ReferenceIndex.csv
new file mode 100644 (file)
index 0000000..3be9ffd
--- /dev/null
@@ -0,0 +1,17 @@
+sys_refindex
+,hash,tablename,recuid,field,flexpointer,softref_key,softref_id,sorting,deleted,ref_table,ref_uid,ref_string
+,8765176f1ce58edcb5efdcabd59ca123,sys_category,31,parent,,,,0,0,sys_category,28,
+,b1315f6a325027205050c81764294b72,sys_file,1,storage,,,,0,0,sys_file_storage,1,
+,10034d14de6b8c87aa0096de9d029498,sys_file,1,metadata,,,,0,0,sys_file_metadata,1,
+,6588728f1c2f2069b4b781ab1d102fff,sys_file,21,storage,,,,0,0,sys_file_storage,1,
+,ff0a9ca5f364b75bccb699b74d167c83,sys_file,21,metadata,,,,0,0,sys_file_metadata,21,
+,557de1cd99f1b4d25f681d822c060598,sys_file_metadata,1,file,,,,0,0,sys_file,1,
+,4821da930346696406e3ccf3ec22d999,sys_file_metadata,21,file,,,,0,0,sys_file,21,
+,aa821da8cdc56afc736974735c9b1c1c,sys_file_reference,126,uid_local,,,,0,0,sys_file,1,
+,8e50f38980afa6f4e84530b12f9cd0b3,sys_file_reference,127,uid_local,,,,0,0,sys_file,21,
+,1f1d715dd5783cd50ecbda978e23dccb,sys_file_reference,128,uid_local,,,,0,0,sys_file,21,
+,c08c2538c324b0a98b0957bc4bdf36ae,sys_file_reference,129,uid_local,,,,0,0,sys_file,1,
+,a1f2ffdc6bf235cb5516c4bfdeec5552,tt_content,330,image,,,,0,0,sys_file_reference,127,
+,fc208fc9d55a71b2faa9f4e4d4fa941d,tt_content,330,image,,,,1,0,sys_file_reference,126,
+,48540de7710e3082f347bdd65ca340f2,tt_content,331,image,,,,0,0,sys_file_reference,128,
+,ceaebd2148901a6d7b0a52c546aa5218,tt_content,331,image,,,,1,0,sys_file_reference,129,
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/ActionTest.php
new file mode 100644 (file)
index 0000000..8ae14fb
--- /dev/null
@@ -0,0 +1,256 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify;
+
+/***************************************************************
+ * 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(__FILE__)) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\AbstractActionTestCase {
+
+       /**
+        * @var string
+        */
+       protected $assertionDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/';
+
+       /**
+        * Content records
+        */
+
+       /**
+        * @test
+        * @see DataSet/Assertion/modifyContentRecord.csv
+        */
+       public function modifyContent() {
+               parent::modifyContent();
+               $this->assertAssertionDataSet('modifyContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/deleteContentRecord.csv
+        */
+       public function deleteContent() {
+               parent::deleteContent();
+               $this->assertAssertionDataSet('deleteContent');
+
+               $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->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/copyContentRecord.csv
+        */
+       public function copyContent() {
+               parent::copyContent();
+               $this->assertAssertionDataSet('copyContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2 (copy 1)');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['copiedContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/localizeContentRecord.csv
+        */
+       public function localizeContent() {
+               parent::localizeContent();
+               $this->assertAssertionDataSet('localizeContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
+
+               // @todo Values in sys_file_reference are not copied during localization...
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                               self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+                       );
+               */
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/changeContentRecordSorting.csv
+        */
+       public function changeContentSorting() {
+               parent::changeContentSorting();
+               $this->assertAssertionDataSet('changeContentSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPage.csv
+        */
+       public function moveContentToDifferentPage() {
+               parent::moveContentToDifferentPage();
+               $this->assertAssertionDataSet('moveContentToDifferentPage');
+
+               $responseContentSource = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentSource, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentSource, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+
+               $responseContentTarget = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentTarget, self::TABLE_Content, 'header', 'Regular Element #2');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentTarget, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPageAndChangeSorting.csv
+        */
+       public function moveContentToDifferentPageAndChangeSorting() {
+               parent::moveContentToDifferentPageAndChangeSorting();
+               $this->assertAssertionDataSet('moveContentToDifferentPageNChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * File references
+        */
+
+       /**
+        * @test
+        * @see DataSets/createContentWFileReference.csv
+        */
+       public function createContentWithFileReference() {
+               parent::createContentWithFileReference();
+               $this->assertAssertionDataSet('createContentWFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['newContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Image #1', TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentWFileReference.csv
+        */
+       public function modifyContentWithFileReference() {
+               parent::modifyContentWithFileReference();
+               $this->assertAssertionDataSet('modifyContentWFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'Image #1'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNAddFileReference.csv
+        */
+       public function modifyContentAndAddFileReference() {
+               parent::modifyContentAndAddFileReference();
+               $this->assertAssertionDataSet('modifyContentNAddFileReference');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper', 'Image #3'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteFileReference.csv
+        */
+       public function modifyContentAndDeleteFileReference() {
+               parent::modifyContentAndDeleteFileReference();
+               $this->assertAssertionDataSet('modifyContentNDeleteFileReference');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', 'This is Kasper', TRUE
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Taken at T3BOARD'
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteAllFileReference.csv
+        */
+       public function modifyContentAndDeleteAllFileReference() {
+               parent::modifyContentAndDeleteAllFileReference();
+               $this->assertAssertionDataSet('modifyContentNDeleteAllFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, 0, self::VALUE_BackendUserId, self::VALUE_WorkspaceId)->getResponseContent();
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper')
+               );
+       }
+
+}
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/changeContentSorting.csv
new file mode 100644 (file)
index 0000000..7e5da8f
--- /dev/null
@@ -0,0 +1,14 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,64,0,0,0,1,0,0,127,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,131,-1,128,0,0,0,1,0,0,126,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,256,0,0,0,1,4,0,330,0,"Regular Element #1",2
+,333,89,768,0,0,0,1,3,0,0,330,"[MOVE-TO PLACEHOLDER for #330, WS#1]",
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/copyContent.csv
new file mode 100644 (file)
index 0000000..09bb23b
--- /dev/null
@@ -0,0 +1,16 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,1,1,0,0,0,21,332,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,8,0,0,0,1,-1,0,130,0,21,332,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,132,89,4,0,0,0,1,1,0,0,0,1,332,tt_content,image,2,sys_file,"This is Kasper",,,,
+,133,-1,4,0,0,0,1,-1,0,132,0,1,332,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,1,1,0,0,0,"Regular Element #2 (copy 1)",
+,333,-1,128,0,0,0,1,-1,0,332,0,"Regular Element #2 (copy 1)",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/createContentWFileReference.csv
new file mode 100644 (file)
index 0000000..3061931
--- /dev/null
@@ -0,0 +1,14 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,1,1,0,0,0,1,332,tt_content,image,1,sys_file,"Image #1",,,,
+,131,-1,8,0,0,0,1,-1,0,130,0,1,332,tt_content,image,1,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,1,1,0,0,0,"Testing #1",
+,333,-1,128,0,0,0,1,-1,0,332,0,"Testing #1",1
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/deleteContent.csv
new file mode 100644 (file)
index 0000000..6f0c51c
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,2,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,2,0,129,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,2,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/localizeContent.csv
new file mode 100644 (file)
index 0000000..1a4efc6
--- /dev/null
@@ -0,0 +1,16 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,48,0,1,128,1,1,0,0,0,21,332,tt_content,image,1,sys_file,,,,,
+,131,-1,48,0,1,128,1,-1,0,130,0,21,332,tt_content,image,10,sys_file,,,,,
+,132,89,24,0,1,129,1,1,0,0,0,1,332,tt_content,image,2,sys_file,,,,,
+,133,-1,24,0,1,129,1,-1,0,132,0,1,332,tt_content,image,10,sys_file,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,768,0,1,331,1,1,0,0,0,"[Translate to Dansk:] Regular Element #2",
+,333,-1,768,0,1,331,1,-1,0,332,0,"[Translate to Dansk:] Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContent.csv
new file mode 100644 (file)
index 0000000..38560cc
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,0,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,0,0,331,0,"Testing #1",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNAddFileReference.csv
new file mode 100644 (file)
index 0000000..307574f
--- /dev/null
@@ -0,0 +1,15 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,132,89,8,0,0,0,1,1,0,0,0,1,331,tt_content,image,3,sys_file,"Image #3",,,,
+,133,-1,8,0,0,0,1,-1,0,132,0,1,331,tt_content,image,3,sys_file,"Image #3",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,0,0,331,0,"Regular Element #2",3
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteAllFileReference.csv
new file mode 100644 (file)
index 0000000..3f9ba0d
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,16,0,0,0,1,2,0,129,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,131,-1,32,0,0,0,1,2,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,0,0,331,0,"Regular Element #2",0
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentNDeleteFileReference.csv
new file mode 100644 (file)
index 0000000..f9b9bc2
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,1,sys_file,"This is Kasper",,,,
+,131,-1,32,0,0,0,1,2,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,0,0,331,0,"Regular Element #2",1
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/modifyContentWFileReference.csv
new file mode 100644 (file)
index 0000000..305f20c
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,2,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,0,0,331,0,"Testing #1",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPage.csv
new file mode 100644 (file)
index 0000000..2b8684a
--- /dev/null
@@ -0,0 +1,14 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,0,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,4,0,331,0,"Regular Element #2",2
+,333,90,256,0,0,0,1,3,0,0,331,"[MOVE-TO PLACEHOLDER for #331, WS#1]",
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Modify/DataSet/moveContentToDifferentPageNChangeSorting.csv
new file mode 100644 (file)
index 0000000..b759f65
--- /dev/null
@@ -0,0 +1,18 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,1,0,0,128,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,1,0,0,129,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,132,-1,64,0,0,0,1,0,0,127,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,133,-1,128,0,0,0,1,0,0,126,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,1,4,0,331,0,"Regular Element #2",2
+,333,90,256,0,0,0,1,3,0,0,331,"[MOVE-TO PLACEHOLDER for #331, WS#1]",
+,334,-1,256,0,0,0,1,4,0,330,0,"Regular Element #1",2
+,335,90,512,0,0,0,1,3,0,0,330,"[MOVE-TO PLACEHOLDER for #330, WS#1]",
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/ActionTest.php
new file mode 100644 (file)
index 0000000..a872cbf
--- /dev/null
@@ -0,0 +1,271 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Publish;
+
+/***************************************************************
+ * 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(__FILE__)) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\AbstractActionTestCase {
+
+       /**
+        * @var string
+        */
+       protected $assertionDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/';
+
+       /**
+        * Content records
+        */
+
+       /**
+        * @test
+        * @see DataSet/Assertion/modifyContentRecord.csv
+        */
+       public function modifyContent() {
+               parent::modifyContent();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('modifyContent');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/deleteContentRecord.csv
+        */
+       public function deleteContent() {
+               parent::deleteContent();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('deleteContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/copyContentRecord.csv
+        */
+       public function copyContent() {
+               parent::copyContent();
+               $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['copiedContentId']);
+               $this->assertAssertionDataSet('copyContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2 (copy 1)');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['copiedContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/localizeContentRecord.csv
+        */
+       public function localizeContent() {
+               parent::localizeContent();
+               $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['localizedContentId']);
+               $this->assertAssertionDataSet('localizeContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
+
+               // @todo Values in sys_file_reference are not copied during localization...
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                               self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+                       );
+               */
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/changeContentRecordSorting.csv
+        */
+       public function changeContentSorting() {
+               parent::changeContentSorting();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
+               $this->assertAssertionDataSet('changeContentSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPage.csv
+        */
+       public function moveContentToDifferentPage() {
+               parent::moveContentToDifferentPage();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('moveContentToDifferentPage');
+
+               $responseContentSource = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentSource, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentSource, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+               $responseContentTarget = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentTarget, self::TABLE_Content, 'header', 'Regular Element #2');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentTarget, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPageAndChangeSorting.csv
+        */
+       public function moveContentToDifferentPageAndChangeSorting() {
+               parent::moveContentToDifferentPageAndChangeSorting();
+               $this->actionService->publishRecords(
+                       array(
+                               self::TABLE_Content => array(self::VALUE_ContentIdFirst, self::VALUE_ContentIdLast),
+                       )
+               );
+               $this->assertAssertionDataSet('moveContentToDifferentPageNChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * File references
+        */
+
+       /**
+        * @test
+        * @see DataSets/createContentWFileReference.csv
+        */
+       public function createContentWithFileReference() {
+               parent::createContentWithFileReference();
+               $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['newContentId']);
+               $this->assertAssertionDataSet('createContentWFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['newContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Image #1', TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentWFileReference.csv
+        */
+       public function modifyContentWithFileReference() {
+               parent::modifyContentWithFileReference();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('modifyContentWFileReference');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'Image #1'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNAddFileReference.csv
+        */
+       public function modifyContentAndAddFileReference() {
+               parent::modifyContentAndAddFileReference();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('modifyContentNAddFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper', 'Image #3'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteFileReference.csv
+        */
+       public function modifyContentAndDeleteFileReference() {
+               parent::modifyContentAndDeleteFileReference();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('modifyContentNDeleteFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'This is Kasper', TRUE
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Taken at T3BOARD'
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteAllFileReference.csv
+        */
+       public function modifyContentAndDeleteAllFileReference() {
+               parent::modifyContentAndDeleteAllFileReference();
+               $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
+               $this->assertAssertionDataSet('modifyContentNDeleteAllFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper')
+               );
+       }
+
+}
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/changeContentSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/changeContentSorting.csv
new file mode 100644 (file)
index 0000000..53a9623
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,64,0,0,0,0,0,0,127,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,131,-1,128,0,0,0,0,0,0,126,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,768,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,256,0,0,0,0,0,0,330,0,"Regular Element #1",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/copyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/copyContent.csv
new file mode 100644 (file)
index 0000000..7a0c67b
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,21,332,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,132,89,4,0,0,0,0,0,0,0,0,1,332,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Regular Element #2 (copy 1)",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/createContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/createContentWFileReference.csv
new file mode 100644 (file)
index 0000000..74ec62b
--- /dev/null
@@ -0,0 +1,12 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,1,332,tt_content,image,1,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Testing #1",1
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/deleteContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/deleteContent.csv
new file mode 100644 (file)
index 0000000..b44550b
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,1000000000,1,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,1000000000,1,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/localizeContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/localizeContent.csv
new file mode 100644 (file)
index 0000000..605c00c
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,48,0,1,128,0,0,0,0,0,21,332,tt_content,image,10,sys_file,,,,,
+,132,89,24,0,1,129,0,0,0,0,0,1,332,tt_content,image,10,sys_file,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,768,0,1,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContent.csv
new file mode 100644 (file)
index 0000000..1db90c2
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNAddFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNAddFileReference.csv
new file mode 100644 (file)
index 0000000..fb2305d
--- /dev/null
@@ -0,0 +1,14 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,132,89,8,0,0,0,0,0,0,0,0,1,331,tt_content,image,3,sys_file,"Image #3",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",3
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteAllFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteAllFileReference.csv
new file mode 100644 (file)
index 0000000..921b464
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,1000000000,1,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,131,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",0
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentNDeleteFileReference.csv
new file mode 100644 (file)
index 0000000..d69a0ca
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,1,sys_file,"This is Kasper",,,,
+,130,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,131,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",1
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/modifyContentWFileReference.csv
new file mode 100644 (file)
index 0000000..293bfb7
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"Image #1",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPage.csv
new file mode 100644 (file)
index 0000000..3c6b66a
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/Publish/DataSet/moveContentToDifferentPageNChangeSorting.csv
new file mode 100644 (file)
index 0000000..46c65ae
--- /dev/null
@@ -0,0 +1,16 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,132,-1,64,0,0,0,0,0,0,127,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,133,-1,128,0,0,0,0,0,0,126,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,90,512,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
+,334,-1,256,0,0,0,0,0,0,330,0,"Regular Element #1",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/ActionTest.php b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/ActionTest.php
new file mode 100644 (file)
index 0000000..0387534
--- /dev/null
@@ -0,0 +1,267 @@
+<?php
+namespace TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\PublishAll;
+
+/***************************************************************
+ * 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(__FILE__)) . '/AbstractActionTestCase.php';
+
+/**
+ * Functional test for the DataHandler
+ */
+class ActionTest extends \TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\AbstractActionTestCase {
+
+       /**
+        * @var string
+        */
+       protected $assertionDataSetDirectory = 'typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/';
+
+       /**
+        * Content records
+        */
+
+       /**
+        * @test
+        * @see DataSet/Assertion/modifyContentRecord.csv
+        */
+       public function modifyContent() {
+               parent::modifyContent();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('modifyContent');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/deleteContentRecord.csv
+        */
+       public function deleteContent() {
+               parent::deleteContent();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('deleteContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentDoesNotHaveRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2');
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/copyContentRecord.csv
+        */
+       public function copyContent() {
+               parent::copyContent();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('copyContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Regular Element #2 (copy 1)');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['copiedContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/localizeContentRecord.csv
+        */
+       public function localizeContent() {
+               parent::localizeContent();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('localizeContent');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId, self::VALUE_LanguageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
+
+               // @todo Values in sys_file_reference are not copied during localization...
+               /*
+                       $this->assertResponseContentStructureHasRecords(
+                               $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                               self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+                       );
+               */
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/changeContentRecordSorting.csv
+        */
+       public function changeContentSorting() {
+               parent::changeContentSorting();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('changeContentSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD')
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPage.csv
+        */
+       public function moveContentToDifferentPage() {
+               parent::moveContentToDifferentPage();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('moveContentToDifferentPage');
+
+               $responseContentSource = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentSource, self::TABLE_Content, 'header', 'Regular Element #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentSource, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+               $responseContentTarget = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContentTarget, self::TABLE_Content, 'header', 'Regular Element #2');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContentTarget, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSet/Assertion/moveContentRecordToDifferentPageAndChangeSorting.csv
+        */
+       public function moveContentToDifferentPageAndChangeSorting() {
+               parent::moveContentToDifferentPageAndChangeSorting();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('moveContentToDifferentPageNChangeSorting');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageIdTarget)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', array('Regular Element #1', 'Regular Element #2'));
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdFirst, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Kasper', 'T3BOARD'), TRUE
+               );
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('This is Kasper', 'Taken at T3BOARD'), TRUE
+               );
+       }
+
+       /**
+        * File references
+        */
+
+       /**
+        * @test
+        * @see DataSets/createContentWFileReference.csv
+        */
+       public function createContentWithFileReference() {
+               parent::createContentWithFileReference();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('createContentWFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentHasRecords($responseContent, self::TABLE_Content, 'header', 'Testing #1');
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . $this->recordIds['newContentId'], self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Image #1', TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentWFileReference.csv
+        */
+       public function modifyContentWithFileReference() {
+               parent::modifyContentWithFileReference();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('modifyContentWFileReference');
+
+               $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_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'Image #1'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNAddFileReference.csv
+        */
+       public function modifyContentAndAddFileReference() {
+               parent::modifyContentAndAddFileReference();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('modifyContentNAddFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper', 'Image #3'), TRUE
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteFileReference.csv
+        */
+       public function modifyContentAndDeleteFileReference() {
+               parent::modifyContentAndDeleteFileReference();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('modifyContentNDeleteFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureHasRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'This is Kasper', TRUE
+               );
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', 'Taken at T3BOARD'
+               );
+       }
+
+       /**
+        * @test
+        * @see DataSets/modifyContentNDeleteAllFileReference.csv
+        */
+       public function modifyContentAndDeleteAllFileReference() {
+               parent::modifyContentAndDeleteAllFileReference();
+               $this->actionService->publishWorkspace(self::VALUE_WorkspaceId);
+               $this->assertAssertionDataSet('modifyContentNDeleteAllFileReference');
+
+               $responseContent = $this->getFrontendResponse(self::VALUE_PageId)->getResponseContent();
+               $this->assertResponseContentStructureDoesNotHaveRecords(
+                       $responseContent, self::TABLE_Content . ':' . self::VALUE_ContentIdLast, self::FIELD_ContentImage,
+                       self::TABLE_FileReference, 'title', array('Taken at T3BOARD', 'This is Kasper')
+               );
+       }
+
+}
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/changeContentSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/changeContentSorting.csv
new file mode 100644 (file)
index 0000000..53a9623
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,64,0,0,0,0,0,0,127,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,131,-1,128,0,0,0,0,0,0,126,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,768,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,256,0,0,0,0,0,0,330,0,"Regular Element #1",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/copyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/copyContent.csv
new file mode 100644 (file)
index 0000000..7a0c67b
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,21,332,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,132,89,4,0,0,0,0,0,0,0,0,1,332,tt_content,image,10,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Regular Element #2 (copy 1)",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/createContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/createContentWFileReference.csv
new file mode 100644 (file)
index 0000000..74ec62b
--- /dev/null
@@ -0,0 +1,12 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,8,0,0,0,0,0,0,0,0,1,332,tt_content,image,1,sys_file,"Image #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
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,128,0,0,0,0,0,0,0,0,"Testing #1",1
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/deleteContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/deleteContent.csv
new file mode 100644 (file)
index 0000000..b44550b
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,1000000000,1,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,1000000000,1,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,1000000000,1,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/localizeContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/localizeContent.csv
new file mode 100644 (file)
index 0000000..605c00c
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,89,48,0,1,128,0,0,0,0,0,21,332,tt_content,image,10,sys_file,,,,,
+,132,89,24,0,1,129,0,0,0,0,0,1,332,tt_content,image,10,sys_file,,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,89,768,0,1,331,0,0,0,0,0,"[Translate to Dansk:] Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContent.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContent.csv
new file mode 100644 (file)
index 0000000..1db90c2
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNAddFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNAddFileReference.csv
new file mode 100644 (file)
index 0000000..fb2305d
--- /dev/null
@@ -0,0 +1,14 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,132,89,8,0,0,0,0,0,0,0,0,1,331,tt_content,image,3,sys_file,"Image #3",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",3
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteAllFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteAllFileReference.csv
new file mode 100644 (file)
index 0000000..921b464
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,1000000000,1,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,1000000000,1,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,131,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",0
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentNDeleteFileReference.csv
new file mode 100644 (file)
index 0000000..d69a0ca
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,1000000000,1,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,1,sys_file,"This is Kasper",,,,
+,130,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,131,-1,1000000000,1,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Regular Element #2",1
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentWFileReference.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/modifyContentWFileReference.csv
new file mode 100644 (file)
index 0000000..293bfb7
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,2,sys_file,"Image #1",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,89,512,0,0,0,0,0,0,0,0,"Testing #1",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPage.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPage.csv
new file mode 100644 (file)
index 0000000..3c6b66a
--- /dev/null
@@ -0,0 +1,13 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,89,256,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
diff --git a/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPageNChangeSorting.csv b/typo3/sysext/workspaces/Tests/Functional/DataHandling/FAL/PublishAll/DataSet/moveContentToDifferentPageNChangeSorting.csv
new file mode 100644 (file)
index 0000000..46c65ae
--- /dev/null
@@ -0,0 +1,16 @@
+sys_file_reference
+,uid,pid,sorting,deleted,sys_language_uid,l10n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,uid_local,uid_foreign,tablenames,fieldname,sorting_foreign,table_local,title,description,alternative,link,downloadname
+,126,89,128,0,0,0,0,0,0,0,0,1,330,tt_content,image,10,sys_file,T3BOARD,,,,
+,127,89,64,0,0,0,0,0,0,0,0,21,330,tt_content,image,10,sys_file,Kasper,,,,
+,128,89,32,0,0,0,0,0,0,0,0,21,331,tt_content,image,10,sys_file,"Taken at T3BOARD",,,,
+,129,89,16,0,0,0,0,0,0,0,0,1,331,tt_content,image,10,sys_file,"This is Kasper",,,,
+,130,-1,32,0,0,0,0,0,0,128,0,21,331,tt_content,image,1,sys_file,"Taken at T3BOARD",,,,
+,131,-1,16,0,0,0,0,0,0,129,0,1,331,tt_content,image,2,sys_file,"This is Kasper",,,,
+,132,-1,64,0,0,0,0,0,0,127,0,21,330,tt_content,image,1,sys_file,Kasper,,,,
+,133,-1,128,0,0,0,0,0,0,126,0,1,330,tt_content,image,2,sys_file,T3BOARD,,,,
+tt_content
+,uid,pid,sorting,deleted,sys_language_uid,l18n_parent,t3ver_wsid,t3ver_state,t3ver_stage,t3ver_oid,t3ver_move_id,header,image
+,330,90,512,0,0,0,0,0,0,0,0,"Regular Element #1",2
+,331,90,256,0,0,0,0,0,0,0,0,"Regular Element #2",2
+,332,-1,512,0,0,0,0,0,0,331,0,"Regular Element #2",2
+,334,-1,256,0,0,0,0,0,0,330,0,"Regular Element #1",2