‪TYPO3CMS  ‪main
SiteDatabaseEditRowTest.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 
20 use PHPUnit\Framework\Attributes\Test;
28 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
29 
30 final class ‪SiteDatabaseEditRowTest extends UnitTestCase
31 {
32  public function ‪setUp(): void
33  {
34  $this->backupEnvironment = true;
35  parent::setUp();
37  $this->createMock(ApplicationContext::class),
38  true,
39  false,
40  '',
41  '',
42  '',
43  '',
44  '',
45  ''
46  );
47  }
48 
49  #[Test]
51  {
52  $input = [
53  'command' => 'new',
54  'foo' => 'bar',
55  ];
56  $siteConfigurationMock = $this->createMock(SiteConfiguration::class);
57  self::assertSame($input, (new ‪SiteDatabaseEditRow($siteConfigurationMock))->addData($input));
58  }
59 
60  #[Test]
62  {
63  $input = [
64  'command' => 'edit',
65  'databaseRow' => [
66  'foo' => 'bar',
67  ],
68  ];
69  $siteConfigurationMock = $this->createMock(SiteConfiguration::class);
70  self::assertSame($input, (new ‪SiteDatabaseEditRow($siteConfigurationMock))->addData($input));
71  }
72 
73  #[Test]
75  {
76  $input = [
77  'command' => 'edit',
78  'tableName' => 'foo',
79  ];
80  $this->expectException(\RuntimeException::class);
81  $this->expectExceptionCode(1520886234);
82  $siteFinderMock = $this->createMock(SiteFinder::class);
83  $siteConfigurationMock = $this->createMock(SiteConfiguration::class);
84  GeneralUtility::addInstance(SiteFinder::class, $siteFinderMock);
85  (new ‪SiteDatabaseEditRow($siteConfigurationMock))->addData($input);
86  }
87 
88  #[Test]
89  public function ‪addDataSetsDataForSysSite(): void
90  {
91  $input = [
92  'command' => 'edit',
93  'tableName' => 'site',
94  'vanillaUid' => 23,
95  'customData' => [
96  'siteIdentifier' => 'main',
97  ],
98  ];
99  $rowData = [
100  'foo' => 'bar',
101  'rootPageId' => 42,
102  'someArray' => [
103  'foo' => 'bar',
104  ],
105  'dependencies' => [
106  'foo/bar',
107  'baz',
108  ],
109  ];
110  $siteFinderMock = $this->createMock(SiteFinder::class);
111  GeneralUtility::addInstance(SiteFinder::class, $siteFinderMock);
112  $siteMock = $this->createMock(Site::class);
113  $siteFinderMock->method('getSiteByRootPageId')->with(23)->willReturn($siteMock);
114  $siteMock->method('getIdentifier')->willReturn('testident');
115  $siteConfiguration = $this->createMock(SiteConfiguration::class);
116  $siteConfiguration->method('load')->with('testident')->willReturn($rowData);
117 
118  $expected = $input;
119  $expected['databaseRow'] = [
120  'uid' => 42,
121  'identifier' => 'main',
122  'rootPageId' => 42,
123  'pid' => 0,
124  'foo' => 'bar',
125  'dependencies' => 'foo/bar,baz',
126  ];
127 
128  self::assertEquals($expected, (new ‪SiteDatabaseEditRow($siteConfiguration))->addData($input));
129  }
130 
131  #[Test]
133  {
134  $input = [
135  'command' => 'edit',
136  'tableName' => 'site_errorhandling',
137  'vanillaUid' => 23,
138  'inlineTopMostParentUid' => 5,
139  'inlineParentFieldName' => 'invalid',
140  ];
141  $rowData = [
142  'foo' => 'bar',
143  ];
144  $siteFinderMock = $this->createMock(SiteFinder::class);
145  GeneralUtility::addInstance(SiteFinder::class, $siteFinderMock);
146  $siteMock = $this->createMock(Site::class);
147  $siteFinderMock->method('getSiteByRootPageId')->with(5)->willReturn($siteMock);
148  $siteMock->method('getIdentifier')->willReturn('testident');
149  $siteConfiguration = $this->createMock(SiteConfiguration::class);
150  $siteConfiguration->method('load')->with('testident')->willReturn($rowData);
151 
152  $this->expectException(\RuntimeException::class);
153  $this->expectExceptionCode(1520886092);
154  (new ‪SiteDatabaseEditRow($siteConfiguration))->addData($input);
155  }
156 
157  #[Test]
159  {
160  $input = [
161  'command' => 'edit',
162  'tableName' => 'site_language',
163  'vanillaUid' => 23,
164  'inlineTopMostParentUid' => 5,
165  'inlineParentFieldName' => 'invalid',
166  ];
167  $rowData = [
168  'foo' => 'bar',
169  ];
170  $siteFinderMock = $this->createMock(SiteFinder::class);
171  GeneralUtility::addInstance(SiteFinder::class, $siteFinderMock);
172  $siteMock = $this->createMock(Site::class);
173  $siteFinderMock->method('getSiteByRootPageId')->with(5)->willReturn($siteMock);
174  $siteMock->method('getIdentifier')->willReturn('testident');
175  $siteConfiguration = $this->createMock(SiteConfiguration::class);
176  $siteConfiguration->method('load')->with('testident')->willReturn($rowData);
177 
178  $this->expectException(\RuntimeException::class);
179  $this->expectExceptionCode(1520886092);
180  (new ‪SiteDatabaseEditRow($siteConfiguration))->addData($input);
181  }
182 
183  #[Test]
184  public function ‪addDataAddLanguageRow(): void
185  {
186  $input = [
187  'command' => 'edit',
188  'tableName' => 'site_language',
189  'vanillaUid' => 23,
190  'inlineTopMostParentUid' => 5,
191  'inlineParentFieldName' => 'languages',
192  ];
193  $rowData = [
194  'languages' => [
195  23 => [
196  'foo' => 'bar',
197  ],
198  ],
199  ];
200  $siteFinderMock = $this->createMock(SiteFinder::class);
201  GeneralUtility::addInstance(SiteFinder::class, $siteFinderMock);
202  $siteMock = $this->createMock(Site::class);
203  $siteFinderMock->method('getSiteByRootPageId')->with(5)->willReturn($siteMock);
204  $siteMock->method('getIdentifier')->willReturn('testident');
205  $siteConfiguration = $this->createMock(SiteConfiguration::class);
206  $siteConfiguration->method('load')->with('testident')->willReturn($rowData);
207 
208  $expected = $input;
209  $expected['databaseRow'] = [
210  'foo' => 'bar',
211  'uid' => 23,
212  'pid' => 0,
213  ];
214 
215  self::assertEquals($expected, (new ‪SiteDatabaseEditRow($siteConfiguration))->addData($input));
216  }
217 }
‪TYPO3\CMS\Core\Core\ApplicationContext
Definition: ApplicationContext.php:39
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataDoesNotChangeResultIfCommandIsNotEdit
‪addDataDoesNotChangeResultIfCommandIsNotEdit()
Definition: SiteDatabaseEditRowTest.php:50
‪TYPO3\CMS\Core\Site\SiteFinder
Definition: SiteFinder.php:31
‪TYPO3\CMS\Core\Configuration\SiteConfiguration
Definition: SiteConfiguration.php:47
‪TYPO3\CMS\Core\Site\Entity\Site
Definition: Site.php:42
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest
Definition: SiteDatabaseEditRowTest.php:31
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataThrowsExceptionWithInvalidLanguage
‪addDataThrowsExceptionWithInvalidLanguage()
Definition: SiteDatabaseEditRowTest.php:158
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\setUp
‪setUp()
Definition: SiteDatabaseEditRowTest.php:32
‪TYPO3\CMS\Core\Core\Environment\initialize
‪static initialize(ApplicationContext $context, bool $cli, bool $composerMode, string $projectPath, string $publicPath, string $varPath, string $configPath, string $currentScript, string $os)
Definition: Environment.php:100
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataAddLanguageRow
‪addDataAddLanguageRow()
Definition: SiteDatabaseEditRowTest.php:184
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataDoesNotChangeResultIfDatabaseRowIsNotEmpty
‪addDataDoesNotChangeResultIfDatabaseRowIsNotEmpty()
Definition: SiteDatabaseEditRowTest.php:61
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataSetsDataForSysSite
‪addDataSetsDataForSysSite()
Definition: SiteDatabaseEditRowTest.php:89
‪TYPO3\CMS\Core\Core\Environment
Definition: Environment.php:41
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataThrowsExceptionIfTableNameIsNotExpected
‪addDataThrowsExceptionIfTableNameIsNotExpected()
Definition: SiteDatabaseEditRowTest.php:74
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\SiteDatabaseEditRowTest\addDataThrowsExceptionWithInvalidErrorHandling
‪addDataThrowsExceptionWithInvalidErrorHandling()
Definition: SiteDatabaseEditRowTest.php:132
‪TYPO3\CMS\Backend\Form\FormDataProvider\SiteDatabaseEditRow
Definition: SiteDatabaseEditRow.php:32
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18