‪TYPO3CMS  ‪main
SlugHelperTest.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;
26 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
27 
31 final class ‪SlugHelperTest extends FunctionalTestCase
32 {
34 
35  private const ‪LANGUAGE_PRESETS = [
36  'EN' => ['id' => 0, 'title' => 'English', 'locale' => 'en_US.UTF8'],
37  'DA' => ['id' => 1, 'title' => 'Dansk', 'locale' => 'da_DK.UTF8'],
38  'DE' => ['id' => 2, 'title' => 'Deutsch', 'locale' => 'de_DE.UTF-8'],
39  'CH' => ['id' => 3, 'title' => 'Schweizer Deutsch', 'locale' => 'de_CH.UTF-8'],
40  ];
41 
42  protected function ‪setUp(): void
43  {
44  parent::setUp();
45  $this->importCSVDataSet(__DIR__ . '/DataSet/Pages.csv');
46  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/be_users_admin.csv');
48  'test',
49  $this->‪buildSiteConfiguration(1, 'http://localhost/'),
50  [
51  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
52  $this->‪buildLanguageConfiguration('DA', '/da/'),
53  $this->‪buildLanguageConfiguration('DE', '/de/'),
54  $this->‪buildLanguageConfiguration('CH', '/de-CH/', ['DE', 'EN']),
55  ],
56  );
57  $backendUser = $this->setUpBackendUser(1);
58  ‪$GLOBALS['LANG'] = $this->get(LanguageServiceFactory::class)->createFromUserPreferences($backendUser);
59  }
60 
74  {
75  return [
76  'default page / default parent' => [
77  '/default-parent/default-page',
78  [
79  'uid' => '13',
80  'title' => 'Default Page',
81  'sys_language_uid' => 0,
82  ],
83  ],
84  'Dansk page / default parent' => [
85  '/default-parent/dansk-page',
86  [
87  'uid' => '13',
88  'title' => 'Dansk Page',
89  'sys_language_uid' => 1,
90  ],
91  ],
92  'german page / german parent' => [
93  '/german-parent/german-page',
94  [
95  'uid' => '13',
96  'title' => 'German Page',
97  'sys_language_uid' => 2,
98  ],
99  ],
100  'swiss page / german fallback parent' => [
101  '/german-parent/swiss-page',
102  [
103  'uid' => '13',
104  'title' => 'Swiss Page',
105  'sys_language_uid' => 3,
106  ],
107  ],
108  ];
109  }
110 
111  #[DataProvider('generateRespectsFallbackLanguageOfParentPageSlugDataProvider')]
112  #[Test]
113  public function ‪generateRespectsFallbackLanguageOfParentPageSlug(string $expected, array $page): void
114  {
115  $slugHelper = GeneralUtility::makeInstance(
116  SlugHelper::class,
117  'pages',
118  'slug',
119  [
120  'generatorOptions' => [
121  'fields' => ['title'],
122  'prefixParentPageSlug' => true,
123  ],
124  ]
125  );
126  self::assertEquals(
127  $expected,
128  $slugHelper->generate(
129  [
130  'title' => $page['title'],
131  'uid' => $page['uid'],
132  'sys_language_uid' => $page['sys_language_uid'],
133  ],
134  (int)$page['uid']
135  )
136  );
137  }
138 }
‪TYPO3\CMS\Core\Localization\LanguageServiceFactory
Definition: LanguageServiceFactory.php:25
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperTest
Definition: SlugHelperTest.php:32
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperTest\setUp
‪setUp()
Definition: SlugHelperTest.php:41
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug
Definition: SlugHelperTest.php:18
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildLanguageConfiguration
‪buildLanguageConfiguration(string $identifier, string $base, array $fallbackIdentifiers=[], string $fallbackType=null)
Definition: SiteBasedTestTrait.php:108
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait
Definition: SiteBasedTestTrait.php:37
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\writeSiteConfiguration
‪writeSiteConfiguration(string $identifier, array $site=[], array $languages=[], array $errorHandling=[])
Definition: SiteBasedTestTrait.php:50
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildSiteConfiguration
‪buildSiteConfiguration(int $rootPageId, string $base='')
Definition: SiteBasedTestTrait.php:88
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperTest\LANGUAGE_PRESETS
‪const LANGUAGE_PRESETS
Definition: SlugHelperTest.php:34
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperTest\generateRespectsFallbackLanguageOfParentPageSlug
‪generateRespectsFallbackLanguageOfParentPageSlug(string $expected, array $page)
Definition: SlugHelperTest.php:112
‪TYPO3\CMS\Core\DataHandling\SlugHelper
Definition: SlugHelper.php:43
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperTest\generateRespectsFallbackLanguageOfParentPageSlugDataProvider
‪static generateRespectsFallbackLanguageOfParentPageSlugDataProvider()
Definition: SlugHelperTest.php:72
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:98
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52