‪TYPO3CMS  ‪main
ClassNamingUtilityTest.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\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
23 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
24 
28 final class ‪ClassNamingUtilityTest extends UnitTestCase
29 {
34  public static function ‪repositoryAndModelClassNames(): array
35  {
36  return [
37  [
38  'VENDOR\\EXT\\Domain\\Repository\\BlogRepository',
39  'VENDOR\\EXT\\Domain\\Model\\Blog',
40  ],
41  [
42  'VENDOR\\EXT\\Domain\\Repository\\_PageRepository',
43  'VENDOR\\EXT\\Domain\\Model\\_Page',
44  ],
45  [
46  'VENDOR\\Repository\\Domain\\Repository\\SomeModelRepository',
47  'VENDOR\\Repository\\Domain\\Model\\SomeModel',
48  ],
49  [
50  'VENDOR\\EXT\\Domain\\Repository\\RepositoryRepository',
51  'VENDOR\\EXT\\Domain\\Model\\Repository',
52  ],
53  [
54  'VENDOR\\Repository\\Domain\\Repository\\RepositoryRepository',
55  'VENDOR\\Repository\\Domain\\Model\\Repository',
56  ],
57  [
58  'VENDOR\\ModelCollection\\Domain\\Repository\\ModelRepository',
59  'VENDOR\\ModelCollection\\Domain\\Model\\Model',
60  ],
61  [
62  'VENDOR\\Model\\Domain\\Repository\\ModelRepository',
63  'VENDOR\\Model\\Domain\\Model\\Model',
64  ],
65  ];
66  }
67 
68  #[DataProvider('repositoryAndModelClassNames')]
69  #[Test]
70  public function ‪translateModelNameToRepositoryName(string $expectedRepositoryName, string $modelName): void
71  {
72  $translatedRepositoryName = ‪ClassNamingUtility::translateModelNameToRepositoryName($modelName);
73  self::assertSame($expectedRepositoryName, $translatedRepositoryName);
74  }
75 
76  #[DataProvider('repositoryAndModelClassNames')]
77  #[Test]
78  public function ‪translateRepositoryNameToModelName(string $repositoryName, string $expectedModelName): void
79  {
80  $translatedModelName = ‪ClassNamingUtility::translateRepositoryNameToModelName($repositoryName);
81  self::assertSame($expectedModelName, $translatedModelName);
82  }
83 
87  public static function ‪controllerObjectNamesAndMatches(): array
88  {
89  return [
90  [
91  'TYPO3\\CMS\\Ext\\Controller\\FooController',
92  [
93  'vendorName' => 'TYPO3\\CMS',
94  'extensionName' => 'Ext',
95  'subpackageKey' => '',
96  'controllerName' => 'Foo',
97  ],
98  ],
99  [
100  'TYPO3\\CMS\\Ext\\Command\\FooCommandController',
101  [
102  'vendorName' => 'TYPO3\\CMS',
103  'extensionName' => 'Ext',
104  'subpackageKey' => '',
105  'controllerName' => 'FooCommand',
106  ],
107  ],
108  [
109  'VENDOR\\Ext\\Controller\\FooController',
110  [
111  'vendorName' => 'VENDOR',
112  'extensionName' => 'Ext',
113  'subpackageKey' => '',
114  'controllerName' => 'Foo',
115  ],
116  ],
117  [
118  'VENDOR\\Ext\\Command\\FooCommandController',
119  [
120  'vendorName' => 'VENDOR',
121  'extensionName' => 'Ext',
122  'subpackageKey' => '',
123  'controllerName' => 'FooCommand',
124  ],
125  ],
126  [
127  'VENDOR\\Ext\\ViewHelpers\\Widget\\Controller\\FooController',
128  [
129  'vendorName' => 'VENDOR',
130  'extensionName' => 'Ext',
131  'subpackageKey' => 'ViewHelpers\\Widget',
132  'controllerName' => 'Foo',
133  ],
134  ],
135  ];
136  }
137 
138  #[DataProvider('controllerObjectNamesAndMatches')]
139  #[Test]
140  public function ‪explodeObjectControllerName(string $controllerObjectName, array $expectedMatches): void
141  {
142  $actualMatches = ‪ClassNamingUtility::explodeObjectControllerName($controllerObjectName);
143  self::assertSame($expectedMatches, $actualMatches);
144  }
145 }
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest
Definition: ClassNamingUtilityTest.php:29
‪TYPO3\CMS\Core\Utility\ClassNamingUtility\translateRepositoryNameToModelName
‪static class string translateRepositoryNameToModelName(string $repositoryName)
Definition: ClassNamingUtility.php:52
‪TYPO3\CMS\Core\Utility\ClassNamingUtility\translateModelNameToRepositoryName
‪static translateModelNameToRepositoryName(string $modelName)
Definition: ClassNamingUtility.php:34
‪TYPO3\CMS\Core\Tests\Unit\Utility
‪TYPO3\CMS\Core\Utility\ClassNamingUtility\explodeObjectControllerName
‪static array< string > explodeObjectControllerName(string $controllerObjectName)
Definition: ClassNamingUtility.php:68
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest\translateRepositoryNameToModelName
‪translateRepositoryNameToModelName(string $repositoryName, string $expectedModelName)
Definition: ClassNamingUtilityTest.php:78
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest\translateModelNameToRepositoryName
‪translateModelNameToRepositoryName(string $expectedRepositoryName, string $modelName)
Definition: ClassNamingUtilityTest.php:70
‪TYPO3\CMS\Core\Utility\ClassNamingUtility
Definition: ClassNamingUtility.php:28
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest\explodeObjectControllerName
‪explodeObjectControllerName(string $controllerObjectName, array $expectedMatches)
Definition: ClassNamingUtilityTest.php:140
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest\controllerObjectNamesAndMatches
‪static controllerObjectNamesAndMatches()
Definition: ClassNamingUtilityTest.php:87
‪TYPO3\CMS\Core\Tests\Unit\Utility\ClassNamingUtilityTest\repositoryAndModelClassNames
‪static repositoryAndModelClassNames()
Definition: ClassNamingUtilityTest.php:34