[TASK] Use Environment API instead of PATH_site in impexp
[Packages/TYPO3.CMS.git] / typo3 / sysext / impexp / Tests / Functional / Import / GroupFileAndFileReferenceItemTest.php
1 <?php
2 namespace TYPO3\CMS\Impexp\Tests\Functional\Import;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Core\Core\Environment;
18 use TYPO3\CMS\Core\Utility\GeneralUtility;
19 use TYPO3\CMS\Impexp\Import;
20 use TYPO3\CMS\Impexp\Tests\Functional\AbstractImportExportTestCase;
21
22 /**
23 * Test case
24 */
25 class GroupFileAndFileReferenceItemTest extends AbstractImportExportTestCase
26 {
27 /**
28 * @var array
29 */
30 protected $additionalFoldersToCreate = [
31 '/uploads/tx_impexpgroupfiles'
32 ];
33
34 /**
35 * @var array
36 */
37 protected $testExtensionsToLoad = [
38 'typo3/sysext/impexp/Tests/Functional/Fixtures/Extensions/impexp_group_files'
39 ];
40
41 /**
42 * @test
43 */
44 public function importGroupFileAndFileReferenceItem()
45 {
46 $subject = GeneralUtility::makeInstance(Import::class);
47 $subject->init();
48
49 $subject->loadFile(
50 __DIR__ . '/../Fixtures/XmlImports/impexp-group-file-and-file_reference-item.xml',
51 1
52 );
53 $subject->importData(0);
54
55 $this->testFilesToDelete[] = Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg';
56 $this->testFilesToDelete[] = Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg';
57
58 $this->assertCSVDataSet('EXT:impexp/Tests/Functional/Fixtures/DatabaseAssertions/importGroupFileAndFileReferenceItem.csv');
59
60 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/fileadmin/user_upload/typo3_image5.jpg', Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg');
61 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/uploads/tx_impexpgroupfiles/typo3_image4.jpg', Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg');
62 }
63
64 /**
65 * @test
66 */
67 public function importGroupFileAndFileReferenceItemWithRootLevelOnlyAllowed()
68 {
69 $GLOBALS['TCA']['tx_impexpgroupfiles_item']['ctrl']['rootLevel'] = 1;
70
71 $subject = GeneralUtility::makeInstance(Import::class);
72 $subject->init();
73
74 $subject->loadFile(
75 __DIR__ . '/../Fixtures/XmlImports/impexp-group-file-and-file_reference-item.xml',
76 1
77 );
78 $subject->importData(0);
79
80 $this->testFilesToDelete[] = Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg';
81 $this->testFilesToDelete[] = Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg';
82
83 $this->assertCSVDataSet('EXT:impexp/Tests/Functional/Fixtures/DatabaseAssertions/importGroupFileAndFileReferenceItemWithRootLevelOnlyAllowed.csv');
84
85 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/fileadmin/user_upload/typo3_image5.jpg', Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg');
86 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/uploads/tx_impexpgroupfiles/typo3_image4.jpg', Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg');
87 }
88
89 /**
90 * @test
91 */
92 public function importGroupFileAndFileReferenceItemWithRootLevelNotAllowed()
93 {
94 $GLOBALS['TCA']['tx_impexpgroupfiles_item']['ctrl']['rootLevel'] = 0;
95
96 $subject = GeneralUtility::makeInstance(Import::class);
97 $subject->init();
98
99 $subject->loadFile(
100 __DIR__ . '/../Fixtures/XmlImports/impexp-group-file-and-file_reference-item-on-pid-zero.xml',
101 1
102 );
103 $subject->importData(0);
104
105 $this->testFilesToDelete[] = Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg';
106
107 $this->assertCSVDataSet('EXT:impexp/Tests/Functional/Fixtures/DatabaseAssertions/importGroupFileAndFileReferenceItemWithRootLevelNotAllowed.csv');
108
109 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/fileadmin/user_upload/typo3_image5.jpg', Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg');
110 $this->assertFileNotExists(Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg');
111
112 $expectedErrors = [
113 'Error: Record type tx_impexpgroupfiles_item is not allowed on pid 0'
114 ];
115 $errors = $subject->errorLog;
116 $this->assertSame($expectedErrors, $errors);
117 }
118
119 /**
120 * @test
121 */
122 public function importGroupFileAndFileReferenceItemWithRootLevelAndPagesAllowed()
123 {
124 $GLOBALS['TCA']['tx_impexpgroupfiles_item']['ctrl']['rootLevel'] = -1;
125
126 $subject = GeneralUtility::makeInstance(Import::class);
127 $subject->init();
128
129 $subject->loadFile(
130 __DIR__ . '/../Fixtures/XmlImports/impexp-group-file-and-file_reference-item.xml',
131 1
132 );
133 $subject->importData(0);
134
135 $this->testFilesToDelete[] = Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg';
136 $this->testFilesToDelete[] = Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg';
137
138 $this->assertCSVDataSet('EXT:impexp/Tests/Functional/Fixtures/DatabaseAssertions/importGroupFileAndFileReferenceItemWithRootLevelAndPagesAllowed.csv');
139
140 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/fileadmin/user_upload/typo3_image5.jpg', Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg');
141 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/uploads/tx_impexpgroupfiles/typo3_image4.jpg', Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg');
142 }
143
144 /**
145 * @test
146 */
147 public function importGroupFileAndFileReferenceItemButImagesNotIncluded()
148 {
149 $subject = GeneralUtility::makeInstance(Import::class);
150 $subject->init();
151
152 $subject->loadFile(
153 __DIR__ . '/../Fixtures/XmlImports/impexp-group-file-and-file_reference-item.xml',
154 1
155 );
156 $subject->importData(0);
157
158 $this->testFilesToDelete[] = Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg';
159 $this->testFilesToDelete[] = Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg';
160
161 $this->assertCSVDataSet('EXT:impexp/Tests/Functional/Fixtures/DatabaseAssertions/importGroupFileAndFileReferenceItem.csv');
162
163 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/fileadmin/user_upload/typo3_image5.jpg', Environment::getPublicPath() . '/fileadmin/user_upload/typo3_image5.jpg');
164 $this->assertFileEquals(__DIR__ . '/../Fixtures/Folders/uploads/tx_impexpgroupfiles/typo3_image4.jpg', Environment::getPublicPath() . '/uploads/tx_impexpgroupfiles/typo3_image4.jpg');
165 }
166 }