Files
bio-concept-labo/web/modules/ps_facetedsearch/tests/BlockLayeredFacetsURLSerializerTest.php
2019-11-20 07:44:43 +01:00

141 lines
4.0 KiB
PHP

<?php
require_once implode(DIRECTORY_SEPARATOR, [
__DIR__,
'..', 'src', 'Ps_FacetedsearchFacetsURLSerializer.php',
]);
use PrestaShop\PrestaShop\Core\Product\Search\Facet;
use PrestaShop\PrestaShop\Core\Product\Search\Filter;
class Ps_FacetedsearchFacetsURLSerializerTest extends PHPUnit_Framework_TestCase
{
private $serializer;
public function setup()
{
$this->serializer = new Ps_FacetedsearchFacetsURLSerializer();
}
public function test_serialize_one_facet()
{
$facet = (new Facet())
->setLabel('Categories')
->addFilter((new Filter())->setLabel('Tops')->setActive(true))
->addFilter((new Filter())->setLabel('Robes')->setActive(true))
;
$this->assertEquals('Categories-Tops-Robes', $this->serializer->serialize([$facet]));
}
public function test_serialize_price_facet()
{
$facet = (new Facet())
->setLabel('Price')
->setProperty('range', true)
->addFilter(
(new Filter())
->setLabel('Doesn\'t matter')
->setActive(true)
->setProperty('symbol', '€')
->setValue(['from' => 7, 'to' => 9])
)
;
$this->assertEquals('Price-€-7-9', $this->serializer->serialize([$facet]));
}
public function test_setFiltersFromEncodedFacets_simple_facets()
{
$template = [
(new Facet())
->setLabel('Categories')
->addFilter((new Filter())->setLabel('Tops')->setActive(false))
->addFilter((new Filter())->setLabel('Dresses')->setActive(false)),
(new Facet())
->setLabel('Strange Birds')
->addFilter((new Filter())->setLabel('Penguins')->setActive(false))
->addFilter((new Filter())->setLabel('Puffins')->setActive(false)),
];
$encodedFacets = 'Categories-Dresses/Strange Birds-Penguins';
$facets = $this
->serializer
->setFiltersFromEncodedFacets(
$template,
$encodedFacets
)
;
/*
* We check that the Dresses filter in the first facet
* and the Pengins filter in the Strange Birds facet were enabled.
*/
$this->assertTrue($facets[0]->getFilters()[1]->isActive());
$this->assertTrue($facets[1]->getFilters()[0]->isActive());
}
public function test_setFiltersFromEncodedFacets_range_filter_adds_the_filter()
{
$template = [
(new Facet())->setLabel('Price')->setProperty('range', true),
];
$encodedFacets = 'Price-€-5-3.14';
$facets = $this
->serializer
->setFiltersFromEncodedFacets(
$template,
$encodedFacets
)
;
$priceFilter = $facets[0]->getFilters()[0];
$this->assertEquals([
'from' => 5,
'to' => 3.14,
], $priceFilter->getValue());
$this->assertTrue($priceFilter->isActive());
}
public function test_setFiltersFromEncodedFacets_range_filter_enables_the_filter()
{
$template = [
(new Facet())->setLabel('Price')->setProperty('range', true)
->addFilter(
(new Filter())
->setActive(false)
->setValue(['from' => 2, 'to' => 7])
),
];
$encodedFacets = 'Price-€-5-3.14';
$facets = $this
->serializer
->setFiltersFromEncodedFacets(
$template,
$encodedFacets
)
;
$filters = $facets[0]->getFilters();
$this->assertCount(1, $filters);
$priceFilter = $filters[0];
$this->assertEquals([
'from' => 2,
'to' => 7,
], $priceFilter->getValue());
$this->assertTrue($priceFilter->isActive());
}
}