|
59 | 59 | import java.util.HashMap; |
60 | 60 | import java.util.Map; |
61 | 61 |
|
| 62 | +import static org.mockito.Mockito.spy; |
| 63 | +import static org.mockito.Mockito.verify; |
62 | 64 | import static org.opensearch.index.IndexSettingsTests.newIndexMeta; |
63 | 65 | import static org.opensearch.index.query.InnerHitBuilderTests.randomNestedInnerHits; |
64 | 66 | import static org.hamcrest.CoreMatchers.containsString; |
@@ -411,4 +413,22 @@ public void testDisallowExpensiveQueries() { |
411 | 413 | OpenSearchException e = expectThrows(OpenSearchException.class, () -> queryBuilder.toQuery(queryShardContext)); |
412 | 414 | assertEquals("[joining] queries cannot be executed when 'search.allow_expensive_queries' is set to false.", e.getMessage()); |
413 | 415 | } |
| 416 | + |
| 417 | + public void testSetParentFilterInContext() throws Exception { |
| 418 | + QueryShardContext queryShardContext = createShardContext(); |
| 419 | + QueryBuilder innerQueryBuilder = spy(new MatchAllQueryBuilderTests().createTestQueryBuilder()); |
| 420 | + when(innerQueryBuilder.toQuery(queryShardContext)).thenAnswer(invoke -> { |
| 421 | + QueryShardContext context = invoke.getArgument(0); |
| 422 | + if (context.getParentFilter() == null) { |
| 423 | + throw new Exception("Expect parent filter to be non-null"); |
| 424 | + } |
| 425 | + return invoke.callRealMethod(); |
| 426 | + }); |
| 427 | + NestedQueryBuilder nqb = new NestedQueryBuilder("nested1", innerQueryBuilder, RandomPicks.randomFrom(random(), ScoreMode.values())); |
| 428 | + |
| 429 | + assertNull(queryShardContext.getParentFilter()); |
| 430 | + nqb.rewrite(queryShardContext).toQuery(queryShardContext); |
| 431 | + assertNull(queryShardContext.getParentFilter()); |
| 432 | + verify(innerQueryBuilder).toQuery(queryShardContext); |
| 433 | + } |
414 | 434 | } |
0 commit comments