/** * Tests setters & getters. */ public function testSetterGetter() { $this->specify('sorts can be set and get', function () { $this->sort->setSorts([$this->sortBuilder->createFieldSort()->setField('f'), $this->sortBuilder->createScoreSort()]); verify($this->sort->getSorts())->count(2); }); $this->specify('sort can be added and get', function () { $this->sort->addSort($this->sortBuilder->createScoreSort()); verify($this->sort->getSorts())->count(1); }); }
/** * @param string $string * * @return AbstractSort[] */ public function buildSortFromString($string) { $sorts = []; if (!empty($string)) { $sortBuilder = new SortBuilder(); foreach ($this->parse($string) as $item) { /* * Position map: * - 0 = field name * - 1 = order (asc/desc) * - 2 = mode (min/max/sum/avg/median) */ if (isset($item[0])) { if ($item[0] === '_score') { $sort = $sortBuilder->createScoreSort(); } elseif ($item[0] === '_doc') { $sort = $sortBuilder->createDocSort(); } else { $sort = $sortBuilder->createFieldSort()->setField($item[0]); } if (isset($item[1])) { $sort->setOrder($item[1]); } if (isset($item[2])) { $sort->setMode($item[2]); } $sorts[] = $sort; } } } return $sorts; }
/** * Tests the Score sort format. */ public function testSortFormat() { $this->specify('score sort was created', function () { $sort = $this->sortBuilder->createScoreSort(); verify($sort)->isInstanceOf('\\Nord\\Lumen\\Elasticsearch\\Search\\Sort\\ScoreSort'); }); $this->specify('score sort format', function () { $sort = $this->sortBuilder->createScoreSort(); $array = $sort->toArray(); verify($array)->equals('_score'); }); $this->specify('score sort format with order', function () { $sort = $this->sortBuilder->createScoreSort(); $sort->setOrder('asc'); $array = $sort->toArray(); verify($array)->equals(['_score' => ['order' => 'asc']]); }); }