Skip to content

Commit

Permalink
Update FinderTest.php
Browse files Browse the repository at this point in the history
  • Loading branch information
sporchia committed Jul 23, 2024
1 parent 6493ac1 commit 8bad2fc
Showing 1 changed file with 116 additions and 50 deletions.
166 changes: 116 additions & 50 deletions tests/Unit/FinderTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,29 @@ public function test_it_finds_all_items_if_no_queries_are_provided(): void
{
$hit = $this->hit();

$stack = HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($hit) . ']},"aggregations":{}}'
),
]));

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}}}',
(string) $request->getBody()
);

return $request;
}));

$client = ClientBuilder::create()
->setHttpClient(new Client(['handler' => HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($hit) . ']},"aggregations":{}}'
),
]))]))
->setHttpClient(new Client(['handler' => $stack]))
->build();

$builder = new SearchCommand(self::TEST_INDEX, Query::with(new BoolQuery()));
Expand All @@ -76,17 +88,29 @@ public function test_it_accepts_must_should_filter_and_where_queries(): void
{
$hit = $this->hit();

$stack = HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":2},"hits":[' . json_encode($hit) . ',' . json_encode($hit) . ']},"aggregations":{}}'
),
]));

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[{"match":{"title":{"query":"Lorem Ipsum","fuzziness":"auto"}}},{"multi_match":{"query":"fuzzy search","fuzziness":"auto"}}],"should":[{"match":{"text":{"query":"consectetur adipiscing elit","fuzziness":"auto"}}}],"filter":[{"term":{"published":{"value":true,"boost":1.0}}},{"term":{"subtitle":{"value":"Dolor sit amet","boost":1.0}}},{"terms":{"tags":["t1","t2"],"boost":1.0}}]}}}',
(string) $request->getBody()
);

return $request;
}));

$client = ClientBuilder::create()
->setHttpClient(new Client(['handler' => HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":2},"hits":[' . json_encode($hit) . ',' . json_encode($hit) . ']},"aggregations":{}}'
),
]))]))
->setHttpClient(new Client(['handler' => $stack]))
->build();

$builder = new ScoutSearchCommandBuilder();
Expand All @@ -106,17 +130,29 @@ public function test_it_accepts_must_should_filter_and_where_queries(): void

public function test_it_accepts_a_query_for_paginated_search(): void
{
$stack = HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]));

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"from":10,"size":100}',
(string) $request->getBody()
);

return $request;
}));

$client = ClientBuilder::create()
->setHttpClient(new Client(['handler' => HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]))]))
->setHttpClient(new Client(['handler' => $stack]))
->build();

$query = Query::with(new BoolQuery());
Expand All @@ -133,17 +169,29 @@ public function test_it_accepts_a_query_for_paginated_search(): void

public function test_it_accepts_a_sortable_query(): void
{
$stack = HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]));

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"sort":[{"id":"desc"}]}',
(string) $request->getBody()
);

return $request;
}));

$client = ClientBuilder::create()
->setHttpClient(new Client(['handler' => HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]))]))
->setHttpClient(new Client(['handler' => $stack]))
->build();

$query = Query::with(new BoolQuery());
Expand All @@ -158,17 +206,29 @@ public function test_it_accepts_a_sortable_query(): void

public function test_it_must_provide_offset_and_limit_for_pagination(): void
{
$stack = HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]));

$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"size":100}',
(string) $request->getBody()
);

return $request;
}));

$client = ClientBuilder::create()
->setHttpClient(new Client(['handler' => HandlerStack::create(new MockHandler([
new Response(
200,
[
'Content-Type' => 'application/json',
Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME,
],
'{"hits":{"total":{"value":1},"hits":[' . json_encode($this->hit()) . ']},"aggregations":{}}'
),
]))]))
->setHttpClient(new Client(['handler' => $stack]))
->build();

$query = Query::with(new BoolQuery());
Expand All @@ -195,6 +255,7 @@ public function test_it_builds_with_default_fields(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[{"multi_match":{"query":"fuzzy search","fields":[":field1:",":field2:"],"fuzziness":"auto"}}],"should":[],"filter":[]}}}',
(string) $request->getBody()
Expand Down Expand Up @@ -231,6 +292,7 @@ public function test_it_adds_fields_to_query(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"fields":["*.length","specific.field"]}',
(string) $request->getBody()
Expand Down Expand Up @@ -267,6 +329,7 @@ public function test_it_adds_aggregates(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"aggs":{"specificAggregation":{"terms":{"field":"specificField","size":10}},"anotherAggregation":{"terms":{"field":"anotherField","size":10}},"metricAggregation":{"max":{"field":"yetAnotherField"}}}}',
(string) $request->getBody()
Expand Down Expand Up @@ -321,6 +384,7 @@ public function test_it_adds_nested_aggregations(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"aggs":{"anotherAggregation":{"terms":{"field":"anotherField","size":10}},"nestedFilteredAggregation":{"nested":{"path":"nestedFilteredAggregation"},"aggs":{"filter_aggs":{"filter":{"bool":{"should":{"bool":{"must":[{"terms":{"nestedFilteredAggregation.someFilter":["values"]}}]}}}},"aggs":{"filter_aggs":{"terms":{"field":"nestedFilteredAggregation.someFieldNestedAggregation","size":10}}}}}},"nestedAggregation":{"nested":{"path":"nestedAggregation"},"aggs":{"someField":{"terms":{"field":"nestedAggregation.someField","size":10}}}}}}',
(string) $request->getBody()
Expand Down Expand Up @@ -391,6 +455,7 @@ public function test_with_single_aggregation(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}},"aggs":{"anotherAggregation":{"terms":{"field":"anotherField","size":10}}}}',
(string) $request->getBody()
Expand Down Expand Up @@ -428,6 +493,7 @@ public function test_it_with_no_aggregations(): void
),
]));
$stack->push(Middleware::mapRequest(function (RequestInterface $request) {
self::assertEquals('/test_index/_search', $request->getUri()->getPath());
self::assertEquals(
'{"query":{"bool":{"must":[],"should":[],"filter":[]}}}',
(string) $request->getBody()
Expand Down

0 comments on commit 8bad2fc

Please sign in to comment.