‪TYPO3CMS  ‪main
SlugHelperUniqueWithLanguageTest.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 
28 final class ‪SlugHelperUniqueWithLanguageTest extends FunctionalTestCase
29 {
31 
32  protected array ‪$testExtensionsToLoad = [
33  'typo3/sysext/core/Tests/Functional/Fixtures/Extensions/test_datahandler_slug',
34  ];
35 
36  private const ‪LANGUAGE_PRESETS = [
37  'EN' => ['id' => 0, 'title' => 'English', 'locale' => 'en_US.UTF8'],
38  ];
39 
40  protected function ‪setUp(): void
41  {
42  parent::setUp();
43  $this->importCSVDataSet(__DIR__ . '/DataSet/TestSlugUniqueWithLanguages.csv');
44  $this->importCSVDataSet(__DIR__ . '/../../Fixtures/be_users_admin.csv');
46  'test',
47  $this->‪buildSiteConfiguration(1, 'http://localhost/'),
48  [
49  $this->‪buildDefaultLanguageConfiguration('EN', '/en/'),
50  ],
51  );
52  }
53 
54  public static function ‪buildSlugForUniqueRespectsLanguageDataProvider(): array
55  {
56  return [
57  'sameLanguageSameSlug' => [
58  'expectedSlug' => 'unique-slug-1',
59  'recordData' => [
60  'uid' => 2,
61  'pid' => 1,
62  'sys_language_uid' => 0,
63  'title' => 'Some title',
64  'slug' => 'unique-slug',
65  ],
66  ],
67  'sameLanguageDifferentSlug' => [
68  'expectedSlug' => 'other-slug',
69  'recordData' => [
70  'uid' => 2,
71  'pid' => 1,
72  'sys_language_uid' => 0,
73  'title' => 'Some title',
74  'slug' => 'other-slug',
75  ],
76  ],
77  'otherLanguageSameSlug' => [
78  'expectedSlug' => 'unique-slug',
79  'recordData' => [
80  'uid' => 2,
81  'pid' => 1,
82  'sys_language_uid' => 1,
83  'title' => 'Some title',
84  'slug' => 'unique-slug',
85  ],
86  ],
87  'allLanguagesSameSlug' => [
88  'expectedSlug' => 'unique-slug-1',
89  'recordData' => [
90  'uid' => 2,
91  'pid' => 1,
92  'sys_language_uid' => -1,
93  'title' => 'Some title',
94  'slug' => 'unique-slug',
95  ],
96  ],
97  ];
98  }
99 
100  #[DataProvider('buildSlugForUniqueRespectsLanguageDataProvider')]
101  #[Test]
102  public function ‪buildSlugForUniqueRespectsLanguage(string $expectedSlug, array $recordData): void
103  {
104  $subject = GeneralUtility::makeInstance(
105  SlugHelper::class,
106  'tx_testdatahandler_slug',
107  'slug',
108  [
109  'generatorOptions' => [
110  'fields' => ['title'],
111  'fieldSeparator' => '/',
112  'prefixParentPageSlug' => false,
113  'replacements' => [
114  '/' => '-',
115  ],
116  ],
117  'fallbackCharacter' => '-',
118  'eval' => 'unique',
119  'default' => '',
120  ]
121  );
122  $state = ‪RecordStateFactory::forName('tx_testdatahandler_slug')->fromArray($recordData);
123  $resultSlug = $subject->buildSlugForUniqueInTable($recordData['slug'], $state);
124  self::assertSame($expectedSlug, $resultSlug);
125  }
126 }
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug
Definition: SlugHelperTest.php:18
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperUniqueWithLanguageTest\$testExtensionsToLoad
‪array $testExtensionsToLoad
Definition: SlugHelperUniqueWithLanguageTest.php:31
‪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\SlugHelperUniqueWithLanguageTest\buildSlugForUniqueRespectsLanguage
‪buildSlugForUniqueRespectsLanguage(string $expectedSlug, array $recordData)
Definition: SlugHelperUniqueWithLanguageTest.php:101
‪TYPO3\CMS\Core\DataHandling\Model\RecordStateFactory
Definition: RecordStateFactory.php:26
‪TYPO3\CMS\Core\DataHandling\SlugHelper
Definition: SlugHelper.php:43
‪TYPO3\CMS\Core\Tests\Functional\SiteHandling\SiteBasedTestTrait\buildDefaultLanguageConfiguration
‪buildDefaultLanguageConfiguration(string $identifier, string $base)
Definition: SiteBasedTestTrait.php:98
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperUniqueWithLanguageTest
Definition: SlugHelperUniqueWithLanguageTest.php:29
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperUniqueWithLanguageTest\buildSlugForUniqueRespectsLanguageDataProvider
‪static buildSlugForUniqueRespectsLanguageDataProvider()
Definition: SlugHelperUniqueWithLanguageTest.php:53
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:52
‪TYPO3\CMS\Core\DataHandling\Model\RecordStateFactory\forName
‪static forName(string $name)
Definition: RecordStateFactory.php:29
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperUniqueWithLanguageTest\LANGUAGE_PRESETS
‪const LANGUAGE_PRESETS
Definition: SlugHelperUniqueWithLanguageTest.php:35
‪TYPO3\CMS\Core\Tests\Functional\DataHandling\Slug\SlugHelperUniqueWithLanguageTest\setUp
‪setUp()
Definition: SlugHelperUniqueWithLanguageTest.php:39