def test_single_mistake(self): target = Target({}) actual = target.autocorrect_query( # 0123456789 "citru", [ { 'found_item': [ { 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'spelling', 'source': 'content', 'type': 'color' } ], 'start': 0, 'end': 5, 'term': 'citru', 'tokens': ['citru'] } ] ) self.assertEqual( actual, "citrus" )
def test_multiple_mistakes_with_same_entity_no_mistake(self): target = Target({}) actual = target.autocorrect_query( # 012345678901234567890123456789 "I want citru high hells citrus thanks", [ { 'found_item': [ { 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'spelling', 'source': 'content', 'type': 'color' } ], 'start': 7, 'end': 12, 'term': 'citru', 'tokens': ['citru'] }, { 'found_item': [ { 'display_name': 'high heels', 'key': 'high heels', 'match_type': 'spelling', 'source': 'content', 'type': 'color' } ], 'start': 13, 'end': 23, 'term': 'high hells', 'tokens': ['high', 'hells'] }, { 'found_item': [ { 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'alias', 'source': 'content', 'type': 'color' } ], 'start': 24, 'end': 30, 'term': 'citrus', 'tokens': ['citrus'] } ] ) self.assertEqual( actual, "I want citrus high heels citrus thanks" )
def test_multiple_mistakes_with_same_entity_no_mistake(self): target = Target({}) actual = target.autocorrect_query( # 012345678901234567890123456789 "I want citru high hells citrus thanks", [{ 'found_item': [{ 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'spelling', 'source': 'content', 'type': 'color' }], 'start': 7, 'end': 12, 'term': 'citru', 'tokens': ['citru'] }, { 'found_item': [{ 'display_name': 'high heels', 'key': 'high heels', 'match_type': 'spelling', 'source': 'content', 'type': 'color' }], 'start': 13, 'end': 23, 'term': 'high hells', 'tokens': ['high', 'hells'] }, { 'found_item': [{ 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'alias', 'source': 'content', 'type': 'color' }], 'start': 24, 'end': 30, 'term': 'citrus', 'tokens': ['citrus'] }]) self.assertEqual(actual, "I want citrus high heels citrus thanks")
def test_no_autocorrection(self): target = Target({}) target.find_matches = Mock() target.find_matches.return_value = { "found": "find_matches_found", "can_not_match": "find_matches_can_not_match" } target.autocorrect_query = Mock() target.autocorrect_query.return_value = None target.key_matches = Mock(return_value="key_matches:return_value") target.unique_non_detections = Mock() target.unique_non_detections.return_value = "unique_non_detections:return_value" target.format_found_entities = Mock() target.format_found_entities.return_value = "formated_found_entities" actual = target.detect_entities( "vocab", { "tokens": "preperation_result:tokens", "used_query": "preperation_result:used_query" } ) self.assertEqual(1, target.find_matches.call_count) self.assertEqual(3, target.find_matches.call_args_list[0][0][0]) self.assertEqual("preperation_result:tokens", target.find_matches.call_args_list[0][0][1]) self.assertEqual( target.find_matches.call_args_list[0][0][2], 'vocab' ) self.assertEqual(1, target.autocorrect_query.call_count) self.assertEqual('preperation_result:used_query', target.autocorrect_query.call_args_list[0][0][0]) self.assertEqual('formated_found_entities', target.autocorrect_query.call_args_list[0][0][1]) self.assertEqual(1, target.key_matches.call_count) self.assertEqual('formated_found_entities', target.key_matches.call_args_list[0][0][0]) self.assertEqual(1, target.unique_non_detections.call_count) self.assertEqual('find_matches_can_not_match', target.unique_non_detections.call_args_list[0][0][0]) self.assertDictEqual( { 'detections': 'key_matches:return_value', 'non_detections': 'unique_non_detections:return_value' }, actual )
def test_autocorrection(self): target = Target({}) target.find_matches = Mock() target.find_matches.return_value = { "found": "find_matches_found", "can_not_match": "find_matches_can_not_match" } target.autocorrect_query = Mock() target.autocorrect_query.return_value = "autocorrected_query_new_value" target.key_matches = Mock(return_value="key_matches:return_value") target.unique_non_detections = Mock() target.unique_non_detections.return_value = "unique_non_detections:return_value" target.format_found_entities = Mock() target.format_found_entities.return_value = "formated_found_entities" actual = target.detect_entities( "vocab", { "tokens": "preperation_result:tokens", "used_query": "preperation_result:used_query" }) self.assertEqual(1, target.find_matches.call_count) self.assertEqual(3, target.find_matches.call_args_list[0][0][0]) self.assertEqual("preperation_result:tokens", target.find_matches.call_args_list[0][0][1]) self.assertEqual('vocab', target.find_matches.call_args_list[0][0][2]) self.assertEqual(target.autocorrect_query.call_count, 1) self.assertEqual(target.autocorrect_query.call_args_list[0][0][0], 'preperation_result:used_query') self.assertEqual(target.autocorrect_query.call_args_list[0][0][1], 'formated_found_entities') self.assertEqual(target.key_matches.call_count, 1) self.assertEqual(target.key_matches.call_args_list[0][0][0], 'formated_found_entities') self.assertEqual(target.unique_non_detections.call_count, 1) self.assertEqual(target.unique_non_detections.call_args_list[0][0][0], 'find_matches_can_not_match') self.assertDictEqual( actual, { 'autocorrected_query': 'autocorrected_query_new_value', 'detections': 'key_matches:return_value', 'non_detections': 'unique_non_detections:return_value' })
def test_no_mistakes(self): target = Target({}) actual = target.autocorrect_query( # 012345678901234567890123456789 "I want citrus high heels", [ { 'found_item': [ { 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'alias', 'source': 'content', 'type': 'color' } ], 'start': 7, 'end': 13, 'term': 'citrus', 'tokens': ['citrus'] }, { 'found_item': [ { 'display_name': 'high heels', 'key': 'high heels', 'match_type': 'alias', 'source': 'content', 'type': 'color' } ], 'start': 14, 'end': 24, 'term': 'high heels', 'tokens': ['high', 'heels'] } ] ) self.assertIsNone(actual)
def test_no_mistakes(self): target = Target({}) actual = target.autocorrect_query( # 012345678901234567890123456789 "I want citrus high heels", [{ 'found_item': [{ 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'alias', 'source': 'content', 'type': 'color' }], 'start': 7, 'end': 13, 'term': 'citrus', 'tokens': ['citrus'] }, { 'found_item': [{ 'display_name': 'high heels', 'key': 'high heels', 'match_type': 'alias', 'source': 'content', 'type': 'color' }], 'start': 14, 'end': 24, 'term': 'high heels', 'tokens': ['high', 'heels'] }]) self.assertIsNone(actual)
def test_single_mistake(self): target = Target({}) actual = target.autocorrect_query( # 0123456789 "citru", [{ 'found_item': [{ 'display_name': 'citrus', 'key': 'citrus', 'match_type': 'spelling', 'source': 'content', 'type': 'color' }], 'start': 0, 'end': 5, 'term': 'citru', 'tokens': ['citru'] }]) self.assertEqual(actual, "citrus")