/** * @dataProvider pricesSegmentationDataProvider */ public function testPricesSegmentation($categoryId, $intervalsNumber, $intervalItems) { $this->_layer->setCurrentCategory($categoryId); $collection = $this->_layer->getProductCollection(); $memoryUsedBefore = memory_get_usage(); $this->_model->setPricesModel($this->_filter)->setStatistics($collection->getMinPrice(), $collection->getMaxPrice(), $collection->getPriceStandardDeviation(), $collection->getSize()); if (!is_null($intervalsNumber)) { $this->assertEquals($intervalsNumber, $this->_model->getIntervalsNumber()); } $items = $this->_model->calculateSeparators(); $this->assertEquals(array_keys($intervalItems), array_keys($items)); for ($i = 0; $i < count($intervalItems); ++$i) { $this->assertInternalType('array', $items[$i]); $this->assertEquals($intervalItems[$i]['from'], $items[$i]['from']); $this->assertEquals($intervalItems[$i]['to'], $items[$i]['to']); $this->assertEquals($intervalItems[$i]['count'], $items[$i]['count']); } // Algorythm should use less than 10M $this->assertLessThan(10 * 1024 * 1024, memory_get_usage() - $memoryUsedBefore); }
/** * Prepare price filter model * * @param Magento_Test_Request|null $request * @return void */ protected function _prepareFilter($request = null) { $layer = new Mage_Catalog_Model_Layer(); $layer->setCurrentCategory(4); $layer->setState(new Mage_Catalog_Model_Layer_State()); $filter = new Mage_Catalog_Model_Layer_Filter_Price(); $filter->setLayer($layer)->setAttributeModel(new Varien_Object(array('attribute_code' => 'price'))); if (!is_null($request)) { $filter->apply($request, new Mage_Core_Block_Text()); $interval = $filter->getInterval(); if ($interval) { $this->_model->setLimits($interval[0], $interval[1]); } } $collection = $layer->getProductCollection(); $this->_model->setPricesModel($filter)->setStatistics($collection->getMinPrice(), $collection->getMaxPrice(), $collection->getPriceStandardDeviation(), $collection->getSize()); }
public function testGetSetCurrentCategory() { $existingCategory = new Mage_Catalog_Model_Category(); $existingCategory->load(5); /* Category object */ $model = new Mage_Catalog_Model_Layer(); $model->setCurrentCategory($existingCategory); $this->assertSame($existingCategory, $model->getCurrentCategory()); /* Category id */ $model = new Mage_Catalog_Model_Layer(); $model->setCurrentCategory(3); $actualCategory = $model->getCurrentCategory(); $this->assertInstanceOf('Mage_Catalog_Model_Category', $actualCategory); $this->assertEquals(3, $actualCategory->getId()); $this->assertSame($actualCategory, $model->getCurrentCategory()); /* Category in registry */ Mage::register('current_category', $existingCategory); try { $model = new Mage_Catalog_Model_Layer(); $this->assertSame($existingCategory, $model->getCurrentCategory()); Mage::unregister('current_category'); $this->assertSame($existingCategory, $model->getCurrentCategory()); } catch (Exception $e) { Mage::unregister('current_category'); throw $e; } try { $model = new Mage_Catalog_Model_Layer(); $model->setCurrentCategory(new Varien_Object()); $this->fail('Assign category of invalid class.'); } catch (Mage_Core_Exception $e) { } try { $model = new Mage_Catalog_Model_Layer(); $model->setCurrentCategory(new Mage_Catalog_Model_Category()); $this->fail('Assign category with invalid id.'); } catch (Mage_Core_Exception $e) { } }
protected function setUp() { $this->_model = Mage::getModel('Mage_Catalog_Model_Layer'); $this->_model->setCurrentCategory(4); }