Skip to content
Snippets Groups Projects
Commit 57987c61 authored by David Vondrak's avatar David Vondrak
Browse files

Added unit tests to DSL filters.

parent 6b01b9e2
No related branches found
No related tags found
No related merge requests found
...@@ -15,6 +15,16 @@ use ONGR\ElasticsearchBundle\DSL\Filter\GeoBoundingBoxFilter; ...@@ -15,6 +15,16 @@ use ONGR\ElasticsearchBundle\DSL\Filter\GeoBoundingBoxFilter;
class GeoBoundingBoxFilterTest extends \PHPUnit_Framework_TestCase class GeoBoundingBoxFilterTest extends \PHPUnit_Framework_TestCase
{ {
/**
* Tests getType method.
*/
public function testGetType()
{
$filter = new GeoBoundingBoxFilter('location', []);
$result = $filter->getType();
$this->assertEquals('geo_bounding_box', $result);
}
/** /**
* Test if exception is thrown when geo points are not set. * Test if exception is thrown when geo points are not set.
* *
...@@ -25,4 +35,63 @@ class GeoBoundingBoxFilterTest extends \PHPUnit_Framework_TestCase ...@@ -25,4 +35,63 @@ class GeoBoundingBoxFilterTest extends \PHPUnit_Framework_TestCase
$filter = new GeoBoundingBoxFilter('location', []); $filter = new GeoBoundingBoxFilter('location', []);
$filter->toArray(); $filter->toArray();
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1 (2 values).
[
'location',
[
['lat' => 40.73, 'lon' => -74.1],
['lat' => 40.01, 'lon' => -71.12],
],
['parameter' => 'value'],
[
'location' => [
'top_left' => ['lat' => 40.73, 'lon' => -74.1],
'bottom_right' => ['lat' => 40.01, 'lon' => -71.12],
],
'parameter' => 'value',
],
],
// Case #2 (4 values).
[
'location',
[40.73, -74.1, 40.01, -71.12],
['parameter' => 'value'],
[
'location' => [
'top' => 40.73,
'left' => -74.1,
'bottom' => 40.01,
'right' => -71.12,
],
'parameter' => 'value',
],
],
];
}
/**
* Tests toArray method.
*
* @param string $field Field name.
* @param array $values Bounding box values.
* @param array $parameters Optional parameters.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($field, $values, $parameters, $expected)
{
$filter = new GeoBoundingBoxFilter($field, $values, $parameters);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
...@@ -24,4 +24,49 @@ class GeoDistanceFilterTest extends \PHPUnit_Framework_TestCase ...@@ -24,4 +24,49 @@ class GeoDistanceFilterTest extends \PHPUnit_Framework_TestCase
$result = $filter->getType(); $result = $filter->getType();
$this->assertEquals('geo_distance', $result); $this->assertEquals('geo_distance', $result);
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1.
[
'location',
'200km',
['lat' => 40, 'lon' => -70],
[],
['distance' => '200km', 'location' => ['lat' => 40, 'lon' => -70]],
],
// Case #2.
[
'location',
'20km',
['lat' => 0, 'lon' => 0],
['parameter' => 'value'],
['distance' => '20km', 'location' => ['lat' => 0, 'lon' => 0], 'parameter' => 'value'],
],
];
}
/**
* Tests toArray method.
*
* @param string $field Field name.
* @param string $distance Distance.
* @param array $location Location.
* @param array $parameters Optional parameters.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($field, $distance, $location, $parameters, $expected)
{
$filter = new GeoDistanceFilter($field, $distance, $location, $parameters);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
...@@ -24,4 +24,49 @@ class GeoDistanceRangeFilterTest extends \PHPUnit_Framework_TestCase ...@@ -24,4 +24,49 @@ class GeoDistanceRangeFilterTest extends \PHPUnit_Framework_TestCase
$result = $filter->getType(); $result = $filter->getType();
$this->assertEquals('geo_distance_range', $result); $this->assertEquals('geo_distance_range', $result);
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1.
[
'location',
['from' => '200km', 'to' => '400km'],
['lat' => 40, 'lon' => -70],
[],
['from' => '200km', 'to' => '400km', 'location' => ['lat' => 40, 'lon' => -70]],
],
// Case #2.
[
'location',
['from' => '150km', 'to' => '180km'],
['lat' => 0, 'lon' => 0],
['parameter' => 'value'],
['from' => '150km', 'to' => '180km', 'location' => ['lat' => 0, 'lon' => 0], 'parameter' => 'value'],
],
];
}
/**
* Tests toArray method.
*
* @param string $field Field name.
* @param array $range Distance range.
* @param array $location Location.
* @param array $parameters Optional parameters.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($field, $range, $location, $parameters, $expected)
{
$filter = new GeoDistanceRangeFilter($field, $range, $location, $parameters);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
...@@ -24,4 +24,75 @@ class GeoPolygonFilterTest extends \PHPUnit_Framework_TestCase ...@@ -24,4 +24,75 @@ class GeoPolygonFilterTest extends \PHPUnit_Framework_TestCase
$result = $filter->getType(); $result = $filter->getType();
$this->assertEquals('geo_polygon', $result); $this->assertEquals('geo_polygon', $result);
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1.
[
'location',
[
['lat' => 20, 'lon' => -80],
['lat' => 30, 'lon' => -40],
['lat' => 70, 'lon' => -90],
],
[],
[
'location' => [
'points' => [
['lat' => 20, 'lon' => -80],
['lat' => 30, 'lon' => -40],
['lat' => 70, 'lon' => -90],
],
],
],
],
// Case #2.
[
'location',
[],
['parameter' => 'value'],
[
'location' => ['points' => []],
'parameter' => 'value',
],
],
// Case #3.
[
'location',
[
['lat' => 20, 'lon' => -80],
],
['parameter' => 'value'],
[
'location' => [
'points' => [['lat' => 20, 'lon' => -80]],
],
'parameter' => 'value',
],
],
];
}
/**
* Tests toArray method.
*
* @param string $field Field name.
* @param array $points Polygon's points.
* @param array $parameters Optional parameters.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($field, $points, $parameters, $expected)
{
$filter = new GeoPolygonFilter($field, $points, $parameters);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
...@@ -25,4 +25,61 @@ class HasChildFilterTest extends \PHPUnit_Framework_TestCase ...@@ -25,4 +25,61 @@ class HasChildFilterTest extends \PHPUnit_Framework_TestCase
$result = $filter->getType(); $result = $filter->getType();
$this->assertEquals('has_child', $result); $this->assertEquals('has_child', $result);
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1.
[
'comment',
'term',
['name' => 'foo'],
[],
'filter',
['type' => 'comment', 'filter' => ['term' => ['name' => 'foo']]],
],
// Case #2.
[
'comment',
'term',
['name' => 'foo'],
['parameter' => 'value'],
'query',
['type' => 'comment', 'query' => ['term' => ['name' => 'foo']], 'parameter' => 'value'],
],
];
}
/**
* Tests toArray method.
*
* @param string $type Child type.
* @param string $queryType Type of query for mock query class.
* @param array $queryToArray Return value for mock query class toArray method.
* @param array $parameters Optional parameters.
* @param string $dslType Filter or query.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($type, $queryType, $queryToArray, $parameters, $dslType, $expected)
{
$mockQuery = $this->getMockBuilder('ONGR\ElasticsearchBundle\DSL\BuilderInterface')->getMock();
$mockQuery->expects($this->once())
->method('getType')
->will($this->returnValue($queryType));
$mockQuery->expects($this->once())
->method('toArray')
->will($this->returnValue($queryToArray));
$filter = new HasChildFilter($type, $mockQuery, $parameters);
$filter->setDslType($dslType);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
...@@ -25,4 +25,61 @@ class HasParentFilterTest extends \PHPUnit_Framework_TestCase ...@@ -25,4 +25,61 @@ class HasParentFilterTest extends \PHPUnit_Framework_TestCase
$result = $filter->getType(); $result = $filter->getType();
$this->assertEquals('has_parent', $result); $this->assertEquals('has_parent', $result);
} }
/**
* Data provider to testToArray.
*
* @return array
*/
public function getArrayDataProvider()
{
return [
// Case #1.
[
'content',
'term',
['title' => 'nested'],
[],
'filter',
['parent_type' => 'content', 'filter' => ['term' => ['title' => 'nested']]],
],
// Case #2.
[
'content',
'term',
['title' => 'nested'],
['parameter' => 'value'],
'query',
['parent_type' => 'content', 'query' => ['term' => ['title' => 'nested']], 'parameter' => 'value'],
],
];
}
/**
* Tests toArray method.
*
* @param string $parentType Parent type.
* @param string $queryType Type of query for mock query class.
* @param array $queryToArray Return value for mock query class toArray method.
* @param array $parameters Optional parameters.
* @param string $dslType Filter or query.
* @param array $expected Expected result.
*
* @dataProvider getArrayDataProvider
*/
public function testToArray($parentType, $queryType, $queryToArray, $parameters, $dslType, $expected)
{
$mockQuery = $this->getMockBuilder('ONGR\ElasticsearchBundle\DSL\BuilderInterface')->getMock();
$mockQuery->expects($this->once())
->method('getType')
->will($this->returnValue($queryType));
$mockQuery->expects($this->once())
->method('toArray')
->will($this->returnValue($queryToArray));
$filter = new HasParentFilter($parentType, $mockQuery, $parameters);
$filter->setDslType($dslType);
$result = $filter->toArray();
$this->assertEquals($expected, $result);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment