|
55 | 55 | import static org.mockito.ArgumentMatchers.any; |
56 | 56 | import static org.mockito.ArgumentMatchers.anyString; |
57 | 57 | import static org.mockito.Mockito.mock; |
| 58 | +import static org.mockito.Mockito.never; |
| 59 | +import static org.mockito.Mockito.times; |
| 60 | +import static org.mockito.Mockito.verify; |
58 | 61 | import static org.mockito.Mockito.when; |
59 | 62 |
|
60 | 63 | public abstract class AbstractScriptFieldTypeTestCase extends MapperServiceTestCase { |
@@ -420,6 +423,43 @@ public final void testCacheable() throws IOException { |
420 | 423 | } |
421 | 424 | } |
422 | 425 |
|
| 426 | + public final void testIsParsedFromSource() throws IOException { |
| 427 | + XContentBuilder mapping = runtimeMapping(b -> { |
| 428 | + b.startObject("field") |
| 429 | + .field("type", typeName()) |
| 430 | + .startObject("script") |
| 431 | + .field("source", "dummy_source") |
| 432 | + .field("lang", "test") |
| 433 | + .endObject() |
| 434 | + .endObject() |
| 435 | + .startObject("field_source") |
| 436 | + .field("type", typeName()) |
| 437 | + .startObject("script") |
| 438 | + .field("source", "deterministic_source") |
| 439 | + .field("lang", "test") |
| 440 | + .endObject() |
| 441 | + .endObject(); |
| 442 | + }); |
| 443 | + MapperService mapperService = createMapperService(mapping); |
| 444 | + SearchExecutionContext c = createSearchExecutionContext(mapperService); |
| 445 | + { |
| 446 | + var fieldType = (AbstractScriptFieldType) c.getFieldType("field_source"); |
| 447 | + SearchLookup searchLookup = mock(SearchLookup.class); |
| 448 | + when(searchLookup.optimizedSourceProvider(any())).thenReturn(searchLookup); |
| 449 | + var result = fieldType.leafFactory(searchLookup); |
| 450 | + assertNotNull(result); |
| 451 | + verify(searchLookup, times(1)).optimizedSourceProvider(any()); |
| 452 | + } |
| 453 | + { |
| 454 | + var fieldType = (AbstractScriptFieldType) c.getFieldType("field"); |
| 455 | + SearchLookup searchLookup = mock(SearchLookup.class); |
| 456 | + when(searchLookup.optimizedSourceProvider(any())).thenReturn(searchLookup); |
| 457 | + var result = fieldType.leafFactory(searchLookup); |
| 458 | + assertNotNull(result); |
| 459 | + verify(searchLookup, never()).optimizedSourceProvider(any()); |
| 460 | + } |
| 461 | + } |
| 462 | + |
423 | 463 | protected final List<Object> blockLoaderReadValuesFromColumnAtATimeReader(DirectoryReader reader, MappedFieldType fieldType, int offset) |
424 | 464 | throws IOException { |
425 | 465 | BlockLoader loader = fieldType.blockLoader(blContext()); |
|
0 commit comments