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