‪TYPO3CMS  11.5
ActionTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
21 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
22 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequestContext;
23 use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\ResponseContent;
24 
29 {
33  public function ‪verifyCleanReferenceIndex(): void
34  {
35  // The test verifies the imported data set has a clean reference index by the check in tearDown()
36  self::assertTrue(true);
37  }
38 
42  public function ‪modifyContent(): void
43  {
44  parent::modifyContent();
45  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContent.csv');
46 
47  $response = $this->executeFrontendSubRequest(
48  (new InternalRequest())->withPageId(self::VALUE_PageId),
49  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
50  );
51  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
52  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
53  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
54  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
55  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
56  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')->setStrict(true));
57  }
58 
62  public function ‪deleteContent(): void
63  {
64  parent::deleteContent();
65  $this->assertCSVDataSet(__DIR__ . '/DataSet/deleteContent.csv');
66 
67  $response = $this->executeFrontendSubRequest(
68  (new InternalRequest())->withPageId(self::VALUE_PageId),
69  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
70  );
71  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
72  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
73  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1'));
74  self::assertThat($responseSections, $this->‪getRequestSectionDoesNotHaveRecordConstraint()
75  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
76  }
77 
81  public function ‪copyContent(): void
82  {
83  parent::copyContent();
84  $this->assertCSVDataSet(__DIR__ . '/DataSet/copyContent.csv');
85 
86  $response = $this->executeFrontendSubRequest(
87  (new InternalRequest())->withPageId(self::VALUE_PageId),
88  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
89  );
90  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
91  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
92  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2 (copy 1)'));
93  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
94  ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['copiedContentId'])->setRecordField(self::FIELD_ContentImage)
95  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')->setStrict(true));
96  }
97 
101  public function ‪localizeContent(): void
102  {
103  parent::localizeContent();
104  $this->assertCSVDataSet(__DIR__ . '/DataSet/localizeContent.csv');
105 
106  $response = $this->executeFrontendSubRequest(
107  (new InternalRequest())->withPageId(self::VALUE_PageId)->withLanguageId(self::VALUE_LanguageId),
108  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
109  );
110  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
111  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
112  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1', '[Translate to Dansk:] Regular Element #2'));
113 
114  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
115  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
116  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('[Translate to Dansk:] This is Kasper', '[Translate to Dansk:] Taken at T3BOARD')->setStrict(true));
117  }
118 
122  public function ‪changeContentSorting(): void
123  {
124  parent::changeContentSorting();
125  $this->assertCSVDataSet(__DIR__ . '/DataSet/changeContentSorting.csv');
126 
127  $response = $this->executeFrontendSubRequest(
128  (new InternalRequest())->withPageId(self::VALUE_PageId),
129  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
130  );
131  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
132  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
133  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1', 'Regular Element #2'));
134  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
135  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentImage)
136  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Kasper', 'T3BOARD'));
137  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
138  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
139  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')->setStrict(true));
140  }
141 
145  public function ‪moveContentToDifferentPage(): void
146  {
147  parent::moveContentToDifferentPage();
148  $this->assertCSVDataSet(__DIR__ . '/DataSet/moveContentToDifferentPage.csv');
149 
150  $response = $this->executeFrontendSubRequest(
151  (new InternalRequest())->withPageId(self::VALUE_PageId),
152  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
153  );
154  $responseSectionsSource = ResponseContent::fromString((string)$response->getBody())->getSections();
155  self::assertThat($responseSectionsSource, $this->‪getRequestSectionHasRecordConstraint()
156  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1'));
157  self::assertThat($responseSectionsSource, $this->‪getRequestSectionStructureHasRecordConstraint()
158  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentImage)
159  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Kasper', 'T3BOARD')->setStrict(true));
160 
161  $response = $this->executeFrontendSubRequest(
162  (new InternalRequest())->withPageId(self::VALUE_PageIdTarget),
163  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
164  );
165  $responseSectionsTarget = ResponseContent::fromString((string)$response->getBody())->getSections();
166  self::assertThat($responseSectionsTarget, $this->‪getRequestSectionHasRecordConstraint()
167  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #2'));
168  self::assertThat($responseSectionsTarget, $this->‪getRequestSectionStructureHasRecordConstraint()
169  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
170  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')->setStrict(true));
171  }
172 
177  {
178  parent::moveContentToDifferentPageAndChangeSorting();
179  $this->assertCSVDataSet(__DIR__ . '/DataSet/moveContentToDifferentPageNChangeSorting.csv');
180 
181  $response = $this->executeFrontendSubRequest(
182  (new InternalRequest())->withPageId(self::VALUE_PageIdTarget),
183  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
184  );
185  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
186  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
187  ->setTable(self::TABLE_Content)->setField('header')->setValues('Regular Element #1', 'Regular Element #2'));
188  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
189  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentImage)
190  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Kasper', 'T3BOARD')->setStrict(true));
191  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
192  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
193  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper', 'Taken at T3BOARD')->setStrict(true));
194  }
195 
203  public function ‪createContentWithFileReference(): void
204  {
205  parent::createContentWithFileReference();
206  $this->assertCSVDataSet(__DIR__ . '/DataSet/createContentWFileReference.csv');
207 
208  $response = $this->executeFrontendSubRequest(
209  (new InternalRequest())->withPageId(self::VALUE_PageId),
210  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
211  );
212  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
213  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
214  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
215  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
216  ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField(self::FIELD_ContentImage)
217  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Image #1')->setStrict(true));
218  }
219 
223  public function ‪modifyContentWithFileReference(): void
224  {
225  parent::modifyContentWithFileReference();
226  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContentWFileReference.csv');
227 
228  $response = $this->executeFrontendSubRequest(
229  (new InternalRequest())->withPageId(self::VALUE_PageId),
230  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
231  );
232  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
233  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
234  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
235  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
236  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
237  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Taken at T3BOARD', 'Image #1')->setStrict(true));
238  }
239 
243  public function ‪modifyContentAndAddFileReference(): void
244  {
245  parent::modifyContentAndAddFileReference();
246  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContentNAddFileReference.csv');
247 
248  $response = $this->executeFrontendSubRequest(
249  (new InternalRequest())->withPageId(self::VALUE_PageId),
250  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
251  );
252  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
253  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
254  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
255  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Taken at T3BOARD', 'This is Kasper', 'Image #3')->setStrict(true));
256  }
257 
262  {
263  parent::modifyContentAndDeleteFileReference();
264  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContentNDeleteFileReference.csv');
265 
266  $response = $this->executeFrontendSubRequest(
267  (new InternalRequest())->withPageId(self::VALUE_PageId),
268  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
269  );
270  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
271  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
272  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
273  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('This is Kasper')->setStrict(true));
274  self::assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
275  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
276  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Taken at T3BOARD'));
277  }
278 
283  {
284  parent::modifyContentAndDeleteAllFileReference();
285  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContentNDeleteAllFileReference.csv');
286 
287  $response = $this->executeFrontendSubRequest(
288  (new InternalRequest())->withPageId(self::VALUE_PageId),
289  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
290  );
291  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
292  self::assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
293  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentImage)
294  ->setTable(self::TABLE_FileReference)->setField('title')->setValues('Taken at T3BOARD', 'This is Kasper'));
295  }
296 
301  {
302  parent::createContentWithFileReferenceAndDeleteFileReference();
303  $this->assertCSVDataSet(__DIR__ . '/DataSet/createContentWFileReferenceNDeleteFileReference.csv');
304  // No FE test: Create and delete scenarios have FE coverage, this test is only about DB state.
305  }
306 }
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionHasRecordConstraint
‪HasRecordConstraint getRequestSectionHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:245
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\createContentWithFileReferenceAndDeleteFileReference
‪createContentWithFileReferenceAndDeleteFileReference()
Definition: ActionTest.php:300
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\localizeContent
‪localizeContent()
Definition: ActionTest.php:101
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureHasRecordConstraint
‪StructureHasRecordConstraint getRequestSectionStructureHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:261
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\createContentWithFileReference
‪createContentWithFileReference()
Definition: ActionTest.php:203
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\modifyContent
‪modifyContent()
Definition: ActionTest.php:42
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\moveContentToDifferentPageAndChangeSorting
‪moveContentToDifferentPageAndChangeSorting()
Definition: ActionTest.php:176
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\verifyCleanReferenceIndex
‪verifyCleanReferenceIndex()
Definition: ActionTest.php:33
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\moveContentToDifferentPage
‪moveContentToDifferentPage()
Definition: ActionTest.php:145
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureDoesNotHaveRecordConstraint
‪StructureDoesNotHaveRecordConstraint getRequestSectionStructureDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:269
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\modifyContentWithFileReference
‪modifyContentWithFileReference()
Definition: ActionTest.php:223
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\modifyContentAndAddFileReference
‪modifyContentAndAddFileReference()
Definition: ActionTest.php:243
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\copyContent
‪copyContent()
Definition: ActionTest.php:81
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\deleteContent
‪deleteContent()
Definition: ActionTest.php:62
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionDoesNotHaveRecordConstraint
‪DoesNotHaveRecordConstraint getRequestSectionDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:253
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\modifyContentAndDeleteAllFileReference
‪modifyContentAndDeleteAllFileReference()
Definition: ActionTest.php:282
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\AbstractActionTestCase
Definition: AbstractActionTestCase.php:24
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\modifyContentAndDeleteFileReference
‪modifyContentAndDeleteFileReference()
Definition: ActionTest.php:261
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest
Definition: ActionTest.php:29
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify\ActionTest\changeContentSorting
‪changeContentSorting()
Definition: ActionTest.php:122
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\FAL\Modify
Definition: ActionTest.php:18