Files
kupshop/bundles/KupShop/KupShopBundle/Tests/StringUtilTest.php
2025-08-02 16:30:27 +02:00

95 lines
3.6 KiB
PHP

<?php
namespace KupShop\KupShopBundle\Tests;
use KupShop\KupShopBundle\Util\StringUtil;
class StringUtilTest extends \PHPUnit\Framework\TestCase
{
public function testBase64ToUrl()
{
$string = '/TWFuIGlzI++GRpc3Rpbmd1a+XNoZWQsIG5vdCBvbmx5IGJ5I//GhpcyByZWFzb24sIG/J1dCBieSB0aGlz';
$this->assertEquals(
$string,
StringUtil::urlToBase64(
urldecode(
StringUtil::base64ToUrl($string)
)
)
);
}
/**
* @dataProvider data_testSlugify
*/
public function testSlugify($string, $expected)
{
$this->assertEquals($expected, $this->slugifyOld($string));
$this->assertEquals($expected, StringUtil::slugify($string));
}
private function slugifyOld($string)
{
$a = ['á', 'ä', 'č', 'ď', 'é', 'ě', 'ë', 'í', 'ň', 'ó', 'ö', 'ô', 'ř', 'š', 'ť', 'ú', 'ů', 'ü', 'ý', 'ž', 'Á', 'Ä', 'Č', 'Ď', 'É', 'Ě', 'Ë', 'Í', 'Ň', 'Ó', 'Ö', 'Ô', 'Ř', 'Š', 'Ť', 'Ú', 'Ů', 'Ü', 'Ý', 'Ž', ' ', '.', '?', '&', '#', '@', '<', '>', '_', 'ľ', 'Ľ'];
$b = ['a', 'a', 'c', 'd', 'e', 'e', 'e', 'i', 'n', 'o', 'o', 'o', 'r', 's', 't', 'u', 'u', 'u', 'y', 'z', 'A', 'A', 'C', 'D', 'E', 'E', 'E', 'I', 'N', 'O', 'O', 'O', 'R', 'S', 'T', 'U', 'U', 'U', 'Y', 'Z', '-', '-', '-', '-', '-', '-', '-', '-', '-', 'l', 'L'];
$string = str_replace($a, $b, $string);
$string = strtolower($string);
$string = preg_replace('/[^a-z^A-Z^0-9^-]/i', '-', $string);
$string = preg_replace('/-+/i', '-', $string);
$string = preg_replace('/^-+/i', '', $string);
$string = preg_replace('/-+$/i', '', $string);
return $string;
}
public function data_testSlugify()
{
return [
['Saka a Kabáty', 'saka-a-kabaty'],
['ťestík/+ { tEsT', 'testik-test'],
['Dárkové poukazy', 'darkove-poukazy'],
['Příslušenství k batohům', 'prislusenstvi-k-batohum'],
['Klíče na pedály, stranové,...', 'klice-na-pedaly-stranove'],
['Pláštěnky, hodinky, a ostatní...', 'plastenky-hodinky-a-ostatni'],
['Momentové klíče, ráčny a nástavce', 'momentove-klice-racny-a-nastavce'],
['Mikrofony a jejich příslušenství ', 'mikrofony-a-jejich-prislusenstvi'],
['Mazací olej Finish Line Teflon Plus DRY, kapátko', 'mazaci-olej-finish-line-teflon-plus-dry-kapatko'],
['29" Plášť MTB Schwalbe Fat Albert Front, Trailstar, Snakeskin, TL-easy', '29-plast-mtb-schwalbe-fat-albert-front-trailstar-snakeskin-tl-easy'],
['29" Mavic CrossRide 2018 - pár 15x100/12x142 + rú', '29-mavic-crossride-2018-par-15x100-12x142-ru'],
];
}
/**
* @dataProvider data_testSlugifyPL
*/
public function testSlugifyPL($string, $expected)
{
$this->assertEquals($expected, StringUtil::slugify($string));
}
public function data_testSlugifyPL()
{
return [
['Piżamy chłopięce', 'pizamy-chlopiece'],
['Długa piżama damska Olivia szara świąteczna', 'dluga-pizama-damska-olivia-szara-swiateczna'],
['ZŁ', 'zl'],
];
}
/**
* @dataProvider data_testCutToWords
*/
public function testCutToWords($string, $expected)
{
$this->assertEquals($expected, StringUtil::cutToWords($string, 15));
}
public function data_testCutToWords()
{
return [
['ahoj světe', 'ahoj světe'],
['ahoj světe, jak se máš', 'ahoj světe, jak'],
];
}
}