2828import com .google .cloud .dialogflow .v2beta1 .KnowledgeBasesClient ;
2929import com .google .cloud .dialogflow .v2beta1 .ProjectName ;
3030
31+ import com .google .common .collect .ImmutableList ;
3132import java .io .ByteArrayOutputStream ;
3233import java .io .PrintStream ;
33- import java .util .Collections ;
3434import java .util .List ;
3535import java .util .Map ;
3636
@@ -53,7 +53,9 @@ public class KnowledgeBaseManagementIT {
5353 private static String KNOWLEDGE_BASE_NAME = "fake_knowledge_base_name" ;
5454 private static String DOCUMENT_BASE_NAME = "fake_document_name" ;
5555
56- private static List <String > TEXTS = Collections .singletonList ("How do I sign up?" );
56+ private static List <String > TEXTS = ImmutableList
57+ .of ("How do I sign up?" , "Is my data redundant?" , "Where can I find pricing information?" ,
58+ "Where is my data stored?" , "What are my support options?" );
5759
5860 @ Before
5961 public void setUp () {
@@ -160,14 +162,19 @@ public void testDetectIntentKnowledge() throws Exception {
160162
161163 Map <String , KnowledgeAnswers > allAnswers = DetectIntentKnowledge
162164 .detectIntentKnowledge (PROJECT_ID , knowledgeBaseName , SESSION_ID , LANGUAGE_CODE , TEXTS );
163- assertEquals (1 , allAnswers .size ());
164- KnowledgeAnswers knowledgeAnswers = allAnswers . get ( TEXTS . get ( 0 )) ;
165+ assertEquals (TEXTS . size () , allAnswers .size ());
166+ int answersFound = 0 ;
165167 for (String text : TEXTS ) {
166- assertEquals (1 , knowledgeAnswers .getAnswersCount ());
167- Answer answer = knowledgeAnswers .getAnswers (0 );
168- assertEquals (text , answer .getFaqQuestion ());
169- assertEquals (document .getName (), answer .getSource ());
170- assertThat (answer .getAnswer ()).contains ("Cloud Storage" );
168+ KnowledgeAnswers knowledgeAnswers = allAnswers .get (text );
169+ if (knowledgeAnswers .getAnswersCount () > 0 ) {
170+ answersFound ++;
171+ Answer answer = knowledgeAnswers .getAnswers (0 );
172+ assertEquals (text , answer .getFaqQuestion ());
173+ assertEquals (document .getName (), answer .getSource ());
174+ assertThat (answer .getAnswer ()).contains ("Cloud Storage" );
175+ }
171176 }
177+ // To make the test less flaky, check that half of the texts got a result.
178+ assertThat (answersFound ).isGreaterThan (TEXTS .size () / 2 );
172179 }
173180}
0 commit comments