Skip to content

Commit

Permalink
Merge pull request #748 from matthiasmullie/patch-2
Browse files Browse the repository at this point in the history
Set correct script attributes in AbstractSimpleAggregation
  • Loading branch information
ruflin committed Jan 14, 2015
2 parents f2abe6f + 1331583 commit acc9604
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/Elastica/Aggregation/AbstractSimpleAggregation.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ public function setField($field)
public function setScript($script)
{
if ($script instanceof Script) {
$this->setParam('params', $script->getParams());
$script = $script->getScript();
$params = array_merge($this->getParams(), $script->toArray());
return $this->setParams($params);
}
return $this->setParam('script', $script);
}
}
}
77 changes: 77 additions & 0 deletions test/lib/Elastica/Test/Aggregation/ScriptTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?php

namespace Elastica\Test\Aggregation;


use Elastica\Aggregation\Sum;
use Elastica\Document;
use Elastica\Query;
use Elastica\Script;

class ScriptTest extends BaseAggregationTest
{
protected function setUp()
{
parent::setUp();
$this->_index = $this->_createIndex('script');
$docs = array(
new Document('1', array('price' => 5)),
new Document('2', array('price' => 8)),
new Document('3', array('price' => 1)),
new Document('4', array('price' => 3)),
);
$this->_index->getType('test')->addDocuments($docs);
$this->_index->refresh();
}

public function testAggregationScript()
{
$agg = new Sum("sum");
// x = (0..1) is groovy-specific syntax, to see if lang is recognized
$script = new Script("x = (0..1); return doc['price'].value", null, "groovy");
$agg->setScript($script);

$query = new Query();
$query->addAggregation($agg);
$results = $this->_index->search($query)->getAggregation("sum");

$this->assertEquals(5 + 8 + 1 + 3, $results['value']);
}

public function testAggregationScriptAsString()
{
$agg = new Sum("sum");
$agg->setScript("doc['price'].value");

$query = new Query();
$query->addAggregation( $agg );
$results = $this->_index->search($query)->getAggregation("sum");

$this->assertEquals(5 + 8 + 1 + 3, $results['value']);
}

public function testSetScript() {
$aggregation = "sum";
$string = "doc['price'].value";
$params = array(
'param1' => 'one',
'param2' => 1,
);
$lang = "groovy";

$agg = new Sum($aggregation);
$script = new Script($string, $params, $lang);
$agg->setScript($script);

$array = $agg->toArray();

$expected = array(
$aggregation => array(
'script' => $string,
'params' => $params,
'lang' => $lang,
)
);
$this->assertEquals($expected, $array);
}
}

0 comments on commit acc9604

Please sign in to comment.