/** * @dataProvider pricesSegmentationDataProvider */ public function testPricesSegmentation($prices, $intervalsNumber, $intervalItems) { $this->_model->setPrices($prices); 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']); } }
/** * Load all product prices to algorithm model * * @param Mage_Catalog_Model_Layer_Filter_Price_Algorithm $algorithm * @param Mage_Catalog_Model_Layer_Filter_Price $filter * @return array */ public function loadAllPrices($algorithm, $filter) { $select = $this->_getSelect($filter); $connection = $this->_getReadAdapter(); $response = $this->_dispatchPreparePriceEvent($filter, $select); $table = $this->_getIndexTableAlias(); $additional = join('', $response->getAdditionalCalculations()); $maxPriceExpr = new Zend_Db_Expr("({$table}.min_price {$additional}) * " . $connection->quote($filter->getCurrencyRate())); $select->columns(array($maxPriceExpr)); $prices = $connection->fetchCol($select); $algorithm->setPrices($prices); return $prices; }