99
1010package org .elasticsearch .search .suggest .phrase ;
1111
12- import org .elasticsearch .ExceptionsHelper ;
13- import org .elasticsearch .action .search .SearchPhaseExecutionException ;
1412import org .elasticsearch .action .search .SearchRequestBuilder ;
13+ import org .elasticsearch .action .search .ShardSearchFailure ;
1514import org .elasticsearch .common .settings .Settings ;
1615import org .elasticsearch .rest .RestStatus ;
1716import org .elasticsearch .search .suggest .SuggestBuilder ;
2423import static org .elasticsearch .search .suggest .SuggestBuilders .phraseSuggestion ;
2524import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertAcked ;
2625import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertNoFailuresAndResponse ;
26+ import static org .elasticsearch .test .hamcrest .ElasticsearchAssertions .assertResponse ;
2727import static org .hamcrest .Matchers .equalTo ;
28+ import static org .hamcrest .Matchers .greaterThan ;
2829
2930public class PhraseSuggesterIT extends ESIntegTestCase {
3031
@@ -48,17 +49,15 @@ public void testPhraseSuggestionWithNgramOnlyAnalyzerThrowsException() throws IO
4849 // 4. NoisyChannelSpellChecker.end() throws IllegalArgumentException
4950 SearchRequestBuilder searchBuilder = createSuggesterSearch ("text.ngrams" );
5051
51- // This should throw SearchPhaseExecutionException wrapping IllegalArgumentException
52- SearchPhaseExecutionException exception = expectThrows (SearchPhaseExecutionException .class , searchBuilder );
53- assertNotNull (exception .getCause ());
54- assertThat (exception .status (), equalTo (RestStatus .BAD_REQUEST ));
55- Throwable rootCause = ExceptionsHelper .unwrap (exception , IllegalArgumentException .class );
56-
57- assertTrue (
58- "Expected IllegalArgumentException but got: " + rootCause .getClass ().getSimpleName (),
59- rootCause instanceof IllegalArgumentException
60- );
61- assertEquals ("At least one unigram is required but all tokens were ngrams" , rootCause .getMessage ());
52+ assertResponse (searchBuilder , response -> {
53+ assertThat (response .status (), equalTo (RestStatus .OK ));
54+ assertThat (response .getFailedShards (), greaterThan (0 ));
55+ assertThat (response .getShardFailures ().length , greaterThan (0 ));
56+ for (ShardSearchFailure shardFailure : response .getShardFailures ()) {
57+ assertTrue (shardFailure .getCause () instanceof IllegalArgumentException );
58+ assertEquals ("At least one unigram is required but all tokens were ngrams" , shardFailure .getCause ().getMessage ());
59+ }
60+ });
6261 }
6362
6463 private static SearchRequestBuilder createSuggesterSearch (String fieldName ) {
0 commit comments