Skip to content

Commit 9d520e6

Browse files
authored
Merge pull request Smile-SA#3797 from Smile-SA/feat_unit_tests_query_completion
[Core] Extending coverage on queries/query builder
2 parents e36ff03 + d6fbe13 commit 9d520e6

22 files changed

Lines changed: 769 additions & 9 deletions

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/BooleanTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,23 @@ public function testNamedBooleanQueryBuilder()
120120
$this->assertEquals('queryName', $query['bool']['_name']);
121121
}
122122

123+
/**
124+
* Test the builder with a query named or renamed after creation.
125+
*
126+
* @return void
127+
*/
128+
public function testLaterNamedBooleanQueryBuilder()
129+
{
130+
$builder = $this->getQueryBuilder();
131+
132+
$boolQuery = new BooleanQuery();
133+
$boolQuery->setName('queryName');
134+
$query = $builder->buildQuery($boolQuery);
135+
136+
$this->assertArrayHasKey('_name', $query['bool']);
137+
$this->assertEquals('queryName', $query['bool']['_name']);
138+
}
139+
123140
/**
124141
* Test the builder with mandatory + cache params.
125142
*

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/CommonTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,36 @@ public function testNamedCommonQueryBuilder()
7070
$this->assertEquals('queryName', $query['common']['_name']);
7171
}
7272

73+
/**
74+
* Test the builder with a query named or renamed after creation.
75+
*
76+
* @return void
77+
*/
78+
public function testLaterNamedCommonQueryBuilder()
79+
{
80+
$builder = $this->getQueryBuilder();
81+
82+
$commonQuery = new CommonQuery('search text', 'searchField');
83+
$commonQuery->setName('queryName');
84+
$query = $builder->buildQuery($commonQuery);
85+
86+
$this->assertArrayHasKey('_name', $query['common']);
87+
$this->assertEquals('queryName', $query['common']['_name']);
88+
89+
$commonQuery = new CommonQuery(
90+
'search text',
91+
'searchField',
92+
CommonQuery::DEFAULT_CUTOFF_FREQUENCY,
93+
CommonQuery::DEFAULT_BOOST_VALUE,
94+
'originalQueryName'
95+
);
96+
$commonQuery->setName('queryName');
97+
$query = $builder->buildQuery($commonQuery);
98+
99+
$this->assertArrayHasKey('_name', $query['common']);
100+
$this->assertEquals('queryName', $query['common']['_name']);
101+
}
102+
73103
/**
74104
* {@inheritDoc}
75105
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/ExistsTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public function testAnonymousMissingQueryBuilder()
4040
$this->assertArrayHasKey('exists', $query);
4141
$this->assertArrayHasKey('field', $query['exists']);
4242
$this->assertArrayNotHasKey('_name', $query['exists']);
43+
44+
$this->assertEquals(ExistsQuery::DEFAULT_BOOST_VALUE, $missingQuery->getBoost());
4345
}
4446

4547
/**
@@ -58,6 +60,30 @@ public function testNamedMissingQueryBuilder()
5860
$this->assertEquals('queryName', $query['exists']['_name']);
5961
}
6062

63+
/**
64+
* Test the builder with a query named or renamed after creation.
65+
*
66+
* @return void
67+
*/
68+
public function testLaterNamedMissingQueryBuilder()
69+
{
70+
$builder = $this->getQueryBuilder();
71+
72+
$missingQuery = new ExistsQuery('field');
73+
$missingQuery->setName('queryName');
74+
$query = $builder->buildQuery($missingQuery);
75+
76+
$this->assertArrayHasKey('_name', $query['exists']);
77+
$this->assertEquals('queryName', $query['exists']['_name']);
78+
79+
$missingQuery = new ExistsQuery('field', 'originalQueryName');
80+
$missingQuery->setName('queryName');
81+
$query = $builder->buildQuery($missingQuery);
82+
83+
$this->assertArrayHasKey('_name', $query['exists']);
84+
$this->assertEquals('queryName', $query['exists']['_name']);
85+
}
86+
6187
/**
6288
* {@inheritDoc}
6389
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/FilteredTest.php

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,37 @@ public function testNamedFilteredQueryBuilder()
7373
$this->assertEquals('queryName', $query['bool']['_name']);
7474
}
7575

76+
/**
77+
* Test the builder with a filtered query named or renamed after creation.
78+
*
79+
* @return void
80+
*/
81+
public function testLaterNamedFilteredQueryBuilder()
82+
{
83+
$builder = $this->getQueryBuilder();
84+
85+
$filteredQuery = new FilteredQuery(
86+
$this->getSubQueryMock('baseQuery'),
87+
$this->getSubQueryMock('filterQuery')
88+
);
89+
$filteredQuery->setName('queryName');
90+
$query = $builder->buildQuery($filteredQuery);
91+
92+
$this->assertArrayHasKey('_name', $query['bool']);
93+
$this->assertEquals('queryName', $query['bool']['_name']);
94+
95+
$filteredQuery = new FilteredQuery(
96+
$this->getSubQueryMock('baseQuery'),
97+
$this->getSubQueryMock('filterQuery'),
98+
'originalQueryName'
99+
);
100+
$filteredQuery->setName('queryName');
101+
$query = $builder->buildQuery($filteredQuery);
102+
103+
$this->assertArrayHasKey('_name', $query['bool']);
104+
$this->assertEquals('queryName', $query['bool']['_name']);
105+
}
106+
76107
/**
77108
* Test the builder with a filter query but an empty base query.
78109
*

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/FunctionScoreTest.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,50 @@ public function testNamedFunctionScoreQueryBuilder()
8282
$this->assertEquals('queryName', $query['function_score']['_name']);
8383
}
8484

85+
/**
86+
* Test the builder with a function score query named or renamed after creation.
87+
*
88+
* @return void
89+
*/
90+
public function testLaterNamedFunctionScoreQueryBuilder()
91+
{
92+
$builder = $this->getQueryBuilder();
93+
94+
$functionScoreQuery = new FunctionScoreQuery($this->getSubQueryMock('baseQuery'), []);
95+
$functionScoreQuery->setName('queryName');
96+
$query = $builder->buildQuery($functionScoreQuery);
97+
98+
$this->assertArrayHasKey('_name', $query['function_score']);
99+
$this->assertEquals('queryName', $query['function_score']['_name']);
100+
101+
$functionScoreQuery = new FunctionScoreQuery(
102+
$this->getSubQueryMock('baseQuery'),
103+
[],
104+
'originalQueryName'
105+
);
106+
$functionScoreQuery->setName('queryName');
107+
$query = $builder->buildQuery($functionScoreQuery);
108+
109+
$this->assertArrayHasKey('_name', $query['function_score']);
110+
$this->assertEquals('queryName', $query['function_score']['_name']);
111+
}
112+
113+
/**
114+
* Test that the builder does not include boost for function_score query.
115+
*
116+
* @return void
117+
*/
118+
public function testNoBoostFunctionScoreQueryBuilder()
119+
{
120+
$builder = $this->getQueryBuilder();
121+
122+
$functionScoreQuery = new FunctionScoreQuery($this->getSubQueryMock('baseQuery'), []);
123+
$query = $builder->buildQuery($functionScoreQuery);
124+
125+
$this->assertNull($functionScoreQuery->getBoost());
126+
$this->assertArrayNotHasKey('boost', $query['function_score']);
127+
}
128+
85129
/**
86130
* {@inheritDoc}
87131
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/MatchPhrasePrefixTest.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,35 @@ public function testNamedMatchPhrasePrefixQueryAssembler(): void
7070
$this->assertEquals('queryName', $query['match_phrase_prefix']['_name']);
7171
}
7272

73+
/**
74+
* Test the assembler with a match phrase prefix query named or renamed after creation.
75+
*/
76+
public function testLaterNamedMatchPhrasePrefixQueryAssembler(): void
77+
{
78+
$assembler = $this->getQueryBuilder();
79+
80+
$matchPhrasePrefixQuery = new MatchPhrasePrefixQuery('search text', 'searchField');
81+
$matchPhrasePrefixQuery->setName('queryName');
82+
$query = $assembler->buildQuery($matchPhrasePrefixQuery);
83+
84+
$this->checkDefaultStructure($query);
85+
$this->assertArrayHasKey('_name', $query['match_phrase_prefix']);
86+
$this->assertEquals('queryName', $query['match_phrase_prefix']['_name']);
87+
88+
$matchPhrasePrefixQuery = new MatchPhrasePrefixQuery(
89+
'search text',
90+
'searchField',
91+
10,
92+
'originalQueryName'
93+
);
94+
$matchPhrasePrefixQuery->setName('queryName');
95+
$query = $assembler->buildQuery($matchPhrasePrefixQuery);
96+
97+
$this->checkDefaultStructure($query);
98+
$this->assertArrayHasKey('_name', $query['match_phrase_prefix']);
99+
$this->assertEquals('queryName', $query['match_phrase_prefix']['_name']);
100+
}
101+
73102
/**
74103
* {@inheritDoc}
75104
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/MissingTest.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,28 @@ public function testNamedMissingQueryBuilder()
6060
$this->assertEquals('queryName', $query['bool']['_name']);
6161
}
6262

63+
/**
64+
* Test the builder with mandatory + boost params.
65+
*
66+
* @return void
67+
*/
68+
public function testBoostedMissingQueryBuilder()
69+
{
70+
$builder = $this->getQueryBuilder();
71+
72+
$missingQuery = new MissingQuery('field');
73+
$this->assertEquals(MissingQuery::DEFAULT_BOOST_VALUE, $missingQuery->getBoost());
74+
75+
$boost = 2.0;
76+
$missingQuery = new MissingQuery('field', null, $boost);
77+
$query = $builder->buildQuery($missingQuery);
78+
79+
$this->assertEquals($boost, $missingQuery->getBoost());
80+
81+
$this->assertArrayHasKey('bool', $query);
82+
$this->assertArrayHasKey('must_not', $query['bool']);
83+
}
84+
6385
/**
6486
* {@inheritDoc}
6587
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/MoreLikeThisTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,43 @@ public function testNamedMoreLikeThisQueryBuilder(): void
9494
$this->assertEquals('queryName', $query['more_like_this']['_name']);
9595
}
9696

97+
/**
98+
* Test the builder with a more like this query named or renamed after creation.
99+
*/
100+
public function testLaterNamedMoreLikeThisQueryBuilder(): void
101+
{
102+
$builder = $this->getQueryBuilder();
103+
104+
$moreLikeThisQuery = new MoreLikeThisQuery(['searchField'], 'search like text');
105+
$moreLikeThisQuery->setName('queryName');
106+
$query = $builder->buildQuery($moreLikeThisQuery);
107+
108+
$this->checkDefaultStructure($query);
109+
$this->assertArrayHasKey('_name', $query['more_like_this']);
110+
$this->assertEquals('queryName', $query['more_like_this']['_name']);
111+
112+
$moreLikeThisQuery = new MoreLikeThisQuery(
113+
['searchField'],
114+
'search like text',
115+
MoreLikeThisQuery::DEFAULT_MINIMUM_SHOULD_MATCH,
116+
MoreLikeThisQuery::DEFAULT_BOOST_TERMS,
117+
MoreLikeThisQuery::DEFAULT_MIN_TERM_FREQ,
118+
MoreLikeThisQuery::DEFAULT_MIN_DOC_FREQ,
119+
MoreLikeThisQuery::DEFAULT_MAX_DOC_FREQ,
120+
MoreLikeThisQuery::DEFAULT_MAX_QUERY_TERMS,
121+
MoreLikeThisQuery::DEFAULT_MIN_WORD_LENGTH,
122+
MoreLikeThisQuery::DEFAULT_MAX_WORD_LENGTH,
123+
false,
124+
'originalQueryName'
125+
);
126+
$moreLikeThisQuery->setName('queryName');
127+
$query = $builder->buildQuery($moreLikeThisQuery);
128+
129+
$this->checkDefaultStructure($query);
130+
$this->assertArrayHasKey('_name', $query['more_like_this']);
131+
$this->assertEquals('queryName', $query['more_like_this']['_name']);
132+
}
133+
97134
/**
98135
* {@inheritDoc}
99136
*/

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/MultiMatchTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,36 @@ public function testNamedMultiMatchQueryBuilder()
7676
$this->assertEquals('queryName', $query['multi_match']['_name']);
7777
}
7878

79+
/**
80+
* Test the builder with a multi match query named or renamed after creation.
81+
*
82+
* @return void
83+
*/
84+
public function testLaterNamedMultiMatchQueryBuilder()
85+
{
86+
$builder = $this->getQueryBuilder();
87+
88+
$matchQuery = new MultiMatchQuery('search text', ['searchField' => 1]);
89+
$matchQuery->setName('queryName');
90+
$query = $builder->buildQuery($matchQuery);
91+
92+
$this->assertArrayHasKey('_name', $query['multi_match']);
93+
$this->assertEquals('queryName', $query['multi_match']['_name']);
94+
95+
$matchQuery = new MultiMatchQuery(
96+
'search text',
97+
['searchField' => 1],
98+
MultiMatchQuery::DEFAULT_MINIMUM_SHOULD_MATCH,
99+
MultiMatchQuery::DEFAULT_TIE_BREAKER,
100+
'originalQueryName'
101+
);
102+
$matchQuery->setName('queryName');
103+
$query = $builder->buildQuery($matchQuery);
104+
105+
$this->assertArrayHasKey('_name', $query['multi_match']);
106+
$this->assertEquals('queryName', $query['multi_match']['_name']);
107+
}
108+
79109
/**
80110
* Test the builder with mandatory + cutoff_frequency params.
81111
*

src/module-elasticsuite-core/Test/Unit/Search/Adapter/Elasticsuite/Request/Query/Builder/NotTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,30 @@ public function testNamedNotQueryBuilder()
6161
$this->assertEquals('queryName', $query['bool']['_name']);
6262
}
6363

64+
/**
65+
* Test the builder with a not query named or renamed after creation.
66+
*
67+
* @return void
68+
*/
69+
public function testLaterNamedNotQueryBuilder()
70+
{
71+
$builder = $this->getQueryBuilder();
72+
73+
$notQuery = new NotQuery($this->getSubQueryMock('subquery'));
74+
$notQuery->setName('queryName');
75+
$query = $builder->buildQuery($notQuery);
76+
77+
$this->assertArrayHasKey('_name', $query['bool']);
78+
$this->assertEquals('queryName', $query['bool']['_name']);
79+
80+
$notQuery = new NotQuery($this->getSubQueryMock('subquery'), 'originalQueryName');
81+
$notQuery->setName('queryName');
82+
$query = $builder->buildQuery($notQuery);
83+
84+
$this->assertArrayHasKey('_name', $query['bool']);
85+
$this->assertEquals('queryName', $query['bool']['_name']);
86+
}
87+
6488
/**
6589
* {@inheritDoc}
6690
*/

0 commit comments

Comments
 (0)