‪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 ‪addElementRelation(): void
43  {
44  parent::addElementRelation();
45  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
46  $this->assertCSVDataSet(__DIR__ . '/DataSet/addElementRelation.csv');
47 
48  $response = $this->executeFrontendSubRequest(
49  (new InternalRequest())->withPageId(self::VALUE_PageId),
50  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
51  );
52  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
53  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
54  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
55  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2', 'Element #3'));
56  }
57 
61  public function ‪deleteElementRelation(): void
62  {
63  parent::deleteElementRelation();
64  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
65  $this->assertCSVDataSet(__DIR__ . '/DataSet/deleteElementRelation.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->‪getRequestSectionStructureHasRecordConstraint()
73  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
74  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1'));
75  self::assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
76  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
77  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
78  }
79 
83  public function ‪changeElementSorting(): void
84  {
85  parent::changeElementSorting();
86  $this->actionService->publishRecord(self::TABLE_Element, self::VALUE_ElementIdFirst);
87  $this->assertCSVDataSet(__DIR__ . '/DataSet/changeElementSorting.csv');
88 
89  $response = $this->executeFrontendSubRequest((new InternalRequest())->withPageId(self::VALUE_PageId));
90  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
91  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
92  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
93  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2'));
94  }
95 
99  public function ‪changeElementRelationSorting(): void
100  {
101  parent::changeElementRelationSorting();
102  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
103  $this->assertCSVDataSet(__DIR__ . '/DataSet/changeElementRelationSorting.csv');
104 
105  $response = $this->executeFrontendSubRequest(
106  (new InternalRequest())->withPageId(self::VALUE_PageId),
107  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
108  );
109  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
110  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
111  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
112  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1', 'Element #2'));
113  }
114 
119  {
120  parent::createContentAndAddElementRelation();
121  $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['newContentId']);
122  $this->assertCSVDataSet(__DIR__ . '/DataSet/createContentNAddRelation.csv');
123 
124  $response = $this->executeFrontendSubRequest(
125  (new InternalRequest())->withPageId(self::VALUE_PageId),
126  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
127  );
128  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
129  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
130  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
131  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
132  ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField(self::FIELD_ContentElement)
133  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1'));
134  }
135 
140  {
141  parent::createContentAndCreateElementRelation();
142  $this->actionService->publishRecords([
143  self::TABLE_Content => [$this->recordIds['newContentId']],
144  self::TABLE_Element => [$this->recordIds['newElementId']],
145  ]);
146  $this->assertCSVDataSet(__DIR__ . '/DataSet/createContentNCreateRelation.csv');
147 
148  $response = $this->executeFrontendSubRequest(
149  (new InternalRequest())->withPageId(self::VALUE_PageId),
150  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
151  );
152  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
153  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
154  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
155  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
156  ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['newContentId'])->setRecordField(self::FIELD_ContentElement)
157  ->setTable(self::TABLE_Element)->setField('title')->setValues('Testing #1'));
158  }
159 
163  public function ‪modifyElementOfRelation(): void
164  {
165  parent::modifyElementOfRelation();
166  $this->actionService->publishRecord(self::TABLE_Element, self::VALUE_ElementIdFirst);
167  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyElementOfRelation.csv');
168 
169  $response = $this->executeFrontendSubRequest(
170  (new InternalRequest())->withPageId(self::VALUE_PageId),
171  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
172  );
173  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
174  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
175  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
176  ->setTable(self::TABLE_Element)->setField('title')->setValues('Testing #1', 'Element #2'));
177  }
178 
182  public function ‪modifyContentOfRelation(): void
183  {
184  parent::modifyContentOfRelation();
185  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdFirst);
186  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyContentOfRelation.csv');
187 
188  $response = $this->executeFrontendSubRequest(
189  (new InternalRequest())->withPageId(self::VALUE_PageId),
190  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
191  );
192  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
193  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
194  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
195  }
196 
200  public function ‪modifyBothSidesOfRelation(): void
201  {
202  parent::modifyBothSidesOfRelation();
203  $this->actionService->publishRecords([
204  self::TABLE_Content => [self::VALUE_ContentIdFirst],
205  self::TABLE_Element => [self::VALUE_ElementIdFirst],
206  ]);
207  $this->assertCSVDataSet(__DIR__ . '/DataSet/modifyBothSidesOfRelation.csv');
208 
209  $response = $this->executeFrontendSubRequest(
210  (new InternalRequest())->withPageId(self::VALUE_PageId),
211  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
212  );
213  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
214  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
215  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
216  ->setTable(self::TABLE_Element)->setField('title')->setValues('Testing #1', 'Element #2'));
217  self::assertThat($responseSections, $this->‪getRequestSectionHasRecordConstraint()
218  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
219  }
220 
224  public function ‪deleteContentOfRelation(): void
225  {
226  parent::deleteContentOfRelation();
227  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
228  $this->assertCSVDataSet(__DIR__ . '/DataSet/deleteContentOfRelation.csv');
229 
230  $response = $this->executeFrontendSubRequest(
231  (new InternalRequest())->withPageId(self::VALUE_PageId),
232  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
233  );
234  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
235  self::assertThat($responseSections, $this->‪getRequestSectionDoesNotHaveRecordConstraint()
236  ->setTable(self::TABLE_Content)->setField('header')->setValues('Testing #1'));
237  }
238 
242  public function ‪deleteElementOfRelation(): void
243  {
244  parent::deleteElementOfRelation();
245  $this->actionService->publishRecord(self::TABLE_Element, self::VALUE_ElementIdFirst);
246  $this->assertCSVDataSet(__DIR__ . '/DataSet/deleteElementOfRelation.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->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
254  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
255  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1'));
256  }
257 
261  public function ‪copyContentOfRelation(): void
262  {
263  parent::copyContentOfRelation();
264  $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['copiedContentId']);
265  $this->assertCSVDataSet(__DIR__ . '/DataSet/copyContentOfRelation.csv');
266 
267  $response = $this->executeFrontendSubRequest(
268  (new InternalRequest())->withPageId(self::VALUE_PageId),
269  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
270  );
271  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
272  // Referenced elements are not copied with the "parent", which is expected and correct
273  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
274  ->setRecordIdentifier(self::TABLE_Content . ':' . $this->recordIds['copiedContentId'])->setRecordField(self::FIELD_ContentElement)
275  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
276  }
277 
281  public function ‪copyElementOfRelation(): void
282  {
283  parent::copyElementOfRelation();
284  $this->actionService->publishRecord(self::TABLE_Element, $this->recordIds['copiedElementId']);
285  $this->assertCSVDataSet(__DIR__ . '/DataSet/copyElementOfRelation.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->‪getRequestSectionStructureHasRecordConstraint()
293  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
294  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1'));
295  // Referenced elements are not updated at the "parent", which is expected and correct
296  self::assertThat($responseSections, $this->‪getRequestSectionStructureDoesNotHaveRecordConstraint()
297  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
298  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #1 (copy 1)'));
299  }
300 
304  public function ‪localizeContentOfRelation(): void
305  {
306  parent::localizeContentOfRelation();
307  $this->actionService->publishRecord(self::TABLE_Content, $this->recordIds['localizedContentId']);
308  $this->assertCSVDataSet(__DIR__ . '/DataSet/localizeContentOfRelation.csv');
309 
310  $response = $this->executeFrontendSubRequest(
311  (new InternalRequest())->withPageId(self::VALUE_PageId)->withLanguageId(self::VALUE_LanguageId),
312  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
313  );
314  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
315  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
316  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentElement)
317  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
318  }
319 
323  public function ‪localizeElementOfRelation(): void
324  {
325  // Create and publish translated page first
326  $translatedPageResult = $this->actionService->copyRecordToLanguage('pages', self::VALUE_PageId, self::VALUE_LanguageId);
327  $this->actionService->publishRecord('pages', $translatedPageResult['pages'][self::VALUE_PageId]);
328  parent::localizeElementOfRelation();
329  $this->actionService->publishRecord(self::TABLE_Element, $this->recordIds['localizedElementId']);
330  $this->assertCSVDataSet(__DIR__ . '/DataSet/localizeElementOfRelation.csv');
331 
332  $response = $this->executeFrontendSubRequest(
333  (new InternalRequest())->withPageId(self::VALUE_PageId)->withLanguageId(self::VALUE_LanguageId),
334  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
335  );
336  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
337  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
338  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdFirst)->setRecordField(self::FIELD_ContentElement)
339  ->setTable(self::TABLE_Element)->setField('title')->setValues('[Translate to Dansk:] Element #1', 'Element #2'));
340  }
341 
346  {
347  parent::moveContentOfRelationToDifferentPage();
348  $this->actionService->publishRecord(self::TABLE_Content, self::VALUE_ContentIdLast);
349  $this->assertCSVDataSet(__DIR__ . '/DataSet/moveContentOfRelationToDifferentPage.csv');
350 
351  $response = $this->executeFrontendSubRequest(
352  (new InternalRequest())->withPageId(self::VALUE_PageIdTarget),
353  (new InternalRequestContext())->withBackendUserId(self::VALUE_BackendUserId)->withWorkspaceId(self::VALUE_WorkspaceId)
354  );
355  $responseSections = ResponseContent::fromString((string)$response->getBody())->getSections();
356  self::assertThat($responseSections, $this->‪getRequestSectionStructureHasRecordConstraint()
357  ->setRecordIdentifier(self::TABLE_Content . ':' . self::VALUE_ContentIdLast)->setRecordField(self::FIELD_ContentElement)
358  ->setTable(self::TABLE_Element)->setField('title')->setValues('Element #2', 'Element #3'));
359  }
360 
365  {
366  parent::localizeContentOfRelationWithLocalizeReferencesAtParentLocalization();
367  $this->actionService->publishRecord(self::TABLE_Content, 299);
368  $this->assertCSVDataSet(__DIR__ . '/DataSet/localizeContentOfRelationWLocalizeReferencesAtParentLocalization.csv');
369  }
370 }
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\createContentAndCreateElementRelation
‪createContentAndCreateElementRelation()
Definition: ActionTest.php:139
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\deleteElementOfRelation
‪deleteElementOfRelation()
Definition: ActionTest.php:242
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionHasRecordConstraint
‪HasRecordConstraint getRequestSectionHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:245
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\moveContentOfRelationToDifferentPage
‪moveContentOfRelationToDifferentPage()
Definition: ActionTest.php:345
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureHasRecordConstraint
‪StructureHasRecordConstraint getRequestSectionStructureHasRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:261
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest
Definition: ActionTest.php:29
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\modifyBothSidesOfRelation
‪modifyBothSidesOfRelation()
Definition: ActionTest.php:200
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\deleteContentOfRelation
‪deleteContentOfRelation()
Definition: ActionTest.php:224
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionStructureDoesNotHaveRecordConstraint
‪StructureDoesNotHaveRecordConstraint getRequestSectionStructureDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:269
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\createContentAndAddElementRelation
‪createContentAndAddElementRelation()
Definition: ActionTest.php:118
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\modifyContentOfRelation
‪modifyContentOfRelation()
Definition: ActionTest.php:182
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\localizeContentOfRelationWithLocalizeReferencesAtParentLocalization
‪localizeContentOfRelationWithLocalizeReferencesAtParentLocalization()
Definition: ActionTest.php:364
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\changeElementRelationSorting
‪changeElementRelationSorting()
Definition: ActionTest.php:99
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\AbstractActionTestCase
Definition: AbstractActionTestCase.php:24
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\verifyCleanReferenceIndex
‪verifyCleanReferenceIndex()
Definition: ActionTest.php:33
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\localizeElementOfRelation
‪localizeElementOfRelation()
Definition: ActionTest.php:323
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\AbstractDataHandlerActionTestCase\getRequestSectionDoesNotHaveRecordConstraint
‪DoesNotHaveRecordConstraint getRequestSectionDoesNotHaveRecordConstraint()
Definition: AbstractDataHandlerActionTestCase.php:253
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\modifyElementOfRelation
‪modifyElementOfRelation()
Definition: ActionTest.php:163
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\changeElementSorting
‪changeElementSorting()
Definition: ActionTest.php:83
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\copyElementOfRelation
‪copyElementOfRelation()
Definition: ActionTest.php:281
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\copyContentOfRelation
‪copyContentOfRelation()
Definition: ActionTest.php:261
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\deleteElementRelation
‪deleteElementRelation()
Definition: ActionTest.php:61
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish
Definition: ActionTest.php:18
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\localizeContentOfRelation
‪localizeContentOfRelation()
Definition: ActionTest.php:304
‪TYPO3\CMS\Workspaces\Tests\Functional\DataHandling\Group\Publish\ActionTest\addElementRelation
‪addElementRelation()
Definition: ActionTest.php:42