95 lines
3.6 KiB
PHP
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'],
|
|
];
|
|
}
|
|
}
|