11
11
from requests .models import Response
12
12
13
13
from botbuilder .ai .luis import (
14
+ IntentScore ,
14
15
LuisApplication ,
15
16
LuisPredictionOptions ,
16
17
LuisRecognizer ,
@@ -32,6 +33,12 @@ class LuisRecognizerTest(unittest.TestCase):
32
33
_subscriptionKey : str = "048ec46dc58e495482b0c447cfdbd291"
33
34
_endpoint : str = "https://westus.api.cognitive.microsoft.com"
34
35
36
+ def __init__ (self , * args , ** kwargs ):
37
+ super (LuisRecognizerTest , self ).__init__ (* args , ** kwargs )
38
+ self ._mocked_results : RecognizerResult = RecognizerResult (
39
+ intents = {"Test" : IntentScore (score = 0.2 ), "Greeting" : IntentScore (score = 0.4 )}
40
+ )
41
+
35
42
def test_luis_recognizer_construction (self ):
36
43
# Arrange
37
44
endpoint = "https://westus.api.cognitive.microsoft.com/luis/v2.0/apps/b31aeaf3-3511-495b-a07f-571fc873214b?verbose=true&timezoneOffset=-360&subscription-key=048ec46dc58e495482b0c447cfdbd291&q="
@@ -333,6 +340,33 @@ def test_v1_datetime_resolution(self):
333
340
self .assertEqual ("T04" , result .entities ["datetime_time" ][0 ]["time" ])
334
341
self .assertEqual (1 , len (result .entities ["$instance" ]["datetime_time" ]))
335
342
343
+ def test_top_intent_returns_top_intent (self ):
344
+ greeting_intent : str = LuisRecognizer .top_intent (self ._mocked_results )
345
+ self .assertEqual (greeting_intent , "Greeting" )
346
+
347
+ def test_top_intent_returns_default_intent_if_min_score_is_higher (self ):
348
+ default_intent : str = LuisRecognizer .top_intent (
349
+ self ._mocked_results , min_score = 0.5
350
+ )
351
+ self .assertEqual (default_intent , "None" )
352
+
353
+ def test_top_intent_returns_default_intent_if_provided (self ):
354
+ default_intent : str = LuisRecognizer .top_intent (
355
+ self ._mocked_results , "Test2" , 0.5
356
+ )
357
+ self .assertEqual (default_intent , "Test2" )
358
+
359
+ def test_top_intent_throws_type_error_if_results_is_none (self ):
360
+ none_results : RecognizerResult = None
361
+ with self .assertRaises (TypeError ):
362
+ LuisRecognizer .top_intent (none_results )
363
+
364
+ def test_top_intent_returns_top_intent_if_score_equals_min_score (self ):
365
+ default_intent : str = LuisRecognizer .top_intent (
366
+ self ._mocked_results , min_score = 0.4
367
+ )
368
+ self .assertEqual (default_intent , "Greeting" )
369
+
336
370
def assert_score (self , score : float ) -> None :
337
371
self .assertTrue (score >= 0 )
338
372
self .assertTrue (score <= 1 )
0 commit comments