Beispiel #1
0
    def test_entities(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.add_entity_to_context([{
            "key": "existing_key",
            "type": "existing_key",
            "source": "detection",
            "entity_message_index": 0
        }], "include", 80.0, "new_key", "new_key")

        self.assertEqual([{
            'entity_message_index': 0,
            'key': 'existing_key',
            'source': 'detection',
            'type': 'existing_key'
        }, {
            'confidence': 80.0,
            'entity_message_index': 1,
            'key': 'new_key',
            'source': 'detection',
            'type': 'new_key',
            'type_weighting': 30.0
        }], actual)
Beispiel #2
0
    def test_single_entity(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.create_entity_type_index_modifier([{
            "key":
            "color",
            "type":
            "black",
            "confidence":
            100,
            "type_weighting":
            50,
            "source":
            "detection",
            "entity_message_index":
            0
        }])

        self.assertListEqual([{
            'confidence': 100,
            'entity_message_index': 0,
            'key': 'color',
            'source': 'detection',
            'type': 'black',
            'type_index_modifier': 1.0,
            'type_weighting': 50
        }], actual)
Beispiel #3
0
    def test_empty_entities(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.extract_entities({"entities": []})
        self.assertListEqual([], actual)
Beispiel #4
0
    def test_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.create("context_id_key", "user_id_key", "application_id_key",
                      "session_id_key", "locale_key")

        self.assertEqual(1, context_data.insert.call_count)
        self.assertListEqual([{
            'type': 'popular',
            'key': 'popular',
            'source': 'default',
            'weighting': 30.0,
            'type_weighting': 30.0
        }, {
            'type': 'added',
            'key': 'added',
            'source': 'default',
            'weighting': 30.0,
            'type_weighting': 30.0
        }], context_data.insert.call_args_list[0][0][0])
        self.assertEqual("locale_key",
                         context_data.insert.call_args_list[0][0][1])
        self.assertEqual("context_id_key",
                         context_data.insert.call_args_list[0][0][2])
        self.assertEqual("application_id_key",
                         context_data.insert.call_args_list[0][0][3])
        self.assertEqual("session_id_key",
                         context_data.insert.call_args_list[0][0][4])
        self.assertEqual("user_id_key",
                         context_data.insert.call_args_list[0][0][5])
Beispiel #5
0
    def test_none_context(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.extract_entities(None)
        self.assertListEqual([], actual)
Beispiel #6
0
    def test_empty_entities(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.create_entity_type_index_modifier([])

        self.assertListEqual([], actual)
Beispiel #7
0
    def test_items(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.extract_user_messages = MagicMock(
            return_value=["value_1", "value_2"].__iter__())
        actual = target.extract_last_user_message("messages_value")

        self.assertEqual("value_1", actual)
Beispiel #8
0
    def test_non_attribute_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)

        supported, unsupported = target.split_unsupported_entities([{
            "_id":
            1,
            "meta": {
                "instock_product_count": 0
            },
            "type":
            "color"
        }, {
            "_id":
            2,
            "meta": {
                "instock_product_count": 0
            },
            "type":
            "non_attribute"
        }, {
            "_id":
            3,
            "meta": {
                "instock_product_count": 110
            },
            "type":
            "color"
        }])

        self.assertListEqual([{
            "_id": 2,
            "meta": {
                "instock_product_count": 0
            },
            "type": "non_attribute"
        }, {
            "_id": 3,
            "meta": {
                "instock_product_count": 110
            },
            "type": "color"
        }], supported)
        self.assertListEqual([{
            "_id": 1,
            "meta": {
                "instock_product_count": 0
            },
            'type': 'color'
        }], unsupported)
Beispiel #9
0
    def test_last_message_jemboo(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.extract_last_user_message = MagicMock(return_value=None)

        target.update("context_id_value", "_rev_value", "messages_value")

        target.extract_last_user_message.assert_called_once_with(
            "messages_value")
        context_data.update.assert_called_once_with('context_id_value',
                                                    '_rev_value')
Beispiel #10
0
    def test_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        in_messages = target.extract_user_messages([{
            "direction": 1,
            "_id": 1
        }, {
            "direction": 0,
            "_id": 2
        }])

        self.assertListEqual([{'_id': 1, 'direction': 1}], list(in_messages))
Beispiel #11
0
    def test_multiple_entity_same_type_different_message_index(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.create_entity_type_index_modifier([{
            "type":
            "color",
            "key":
            "black",
            "confidence":
            100,
            "type_weighting":
            50,
            "source":
            "detection",
            "entity_message_index":
            0
        }, {
            "key":
            "red",
            "type":
            "color",
            "confidence":
            100,
            "type_weighting":
            50,
            "source":
            "detection",
            "entity_message_index":
            1
        }])

        self.assertListEqual([{
            'confidence': 100,
            'entity_message_index': 0,
            'key': 'black',
            'source': 'detection',
            'type': 'color',
            'type_index_modifier': 0.7071067811865475,
            'type_weighting': 50
        }, {
            'confidence': 100,
            'entity_message_index': 1,
            'key': 'red',
            'source': 'detection',
            'type': 'color',
            'type_index_modifier': 1.0,
            'type_weighting': 50
        }], actual)
Beispiel #12
0
    def test_last_message_user(self):
        context_data = MagicMock()
        context_data.get = MagicMock(return_value="existing_context_value")
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.extract_last_user_message = MagicMock(
            return_value="last_message")
        target.extract_entities = MagicMock(return_value="extracted_entities")
        target.remove_default_entities_if_detections = MagicMock(
            return_value="removed_entities")
        target.update_entities_with_last_message = MagicMock(
            return_value="entities_update_entities_with_last_message")
        target.create_entity_type_index_modifier = MagicMock(
            return_value="entities_create_entity_type_index_modifier")
        target.change_entities_weighting = MagicMock(
            return_value="entities_change_entities_weighting")

        target.add_product_counts = MagicMock(
            return_value="entities_add_product_counts")
        target.split_unsupported_entities = MagicMock(
            return_value=("supported_entities", "unsupported_entities"))

        target.update("context_id_value", "_rev_value", "messages_value")

        target.extract_last_user_message.assert_called_once_with(
            "messages_value")
        context_data.get.assert_called_once_with('context_id_value',
                                                 '_rev_value')
        target.extract_entities.assert_called_once_with(
            'existing_context_value')
        target.update_entities_with_last_message.assert_called_once_with(
            'extracted_entities', 'last_message')
        target.remove_default_entities_if_detections.assert_called_once_with(
            'entities_update_entities_with_last_message')
        target.create_entity_type_index_modifier.assert_called_once_with(
            'removed_entities')
        target.change_entities_weighting.assert_called_once_with(
            'entities_create_entity_type_index_modifier')
        target.add_product_counts.assert_called_once_with(
            'entities_change_entities_weighting')
        target.split_unsupported_entities.assert_called_once_with(
            "entities_add_product_counts")
        context_data.update.assert_called_once_with(
            'context_id_value',
            '_rev_value',
            unsupported_entities="unsupported_entities",
            entities='supported_entities')
Beispiel #13
0
    def test_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.calculate_weighting = MagicMock(side_effect=[31, 21, 3])

        actual = target.change_entities_weighting([{"id": 1}, {"id": 2}])

        self.assertListEqual([{
            'id': 1,
            'weighting': 31
        }, {
            'id': 2,
            'weighting': 21
        }], actual)
Beispiel #14
0
    def test_some_detections(self):
        context_data = MagicMock()
        context_data.get = MagicMock(return_value="existing_context_value")

        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.remove_default_entities_if_detections([{
            "source": "default",
            "id": 1
        }, {
            "source": "default",
            "id": 2
        }, {
            "source": "detection",
            "id": 1
        }])

        self.assertListEqual([{'id': 1, 'source': 'detection'}], actual)
Beispiel #15
0
    def test_existing_exclude_entity_now_include(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        actual = target.add_entity_to_context([{
            'confidence': 80.0,
            'entity_message_index': 1,
            'negation_modifier': -100,
            'key': 'black',
            'source': 'detection',
            'type': 'color',
            'type_weighting': 90.0
        }], "include", 80.0, "color", "black")

        self.assertEqual([{
            'confidence': 80.0,
            'entity_message_index': 2,
            'key': 'black',
            'source': 'detection',
            'type': 'color',
            'type_weighting': 99.00000000000001
        }], actual)
Beispiel #16
0
    def test_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.add_entity_to_context = MagicMock(
            side_effect=(["context_entities_1"]))

        actual = target.update_entities_with_last_message(
            ["entity_value"], {
                "detection": {
                    "outcomes": [{
                        "intent":
                        "intent_value_1",
                        "entities": [{
                            "confidence": "confidence_value_1_1",
                            "type": "type_value_1_1",
                            "key": "key_value_1_1",
                            "source": "detection"
                        }]
                    }]
                }
            })

        self.assertEqual(1, target.add_entity_to_context.call_count)
        self.assertEqual(['entity_value'],
                         target.add_entity_to_context.call_args_list[0][0][0])
        self.assertEqual('intent_value_1',
                         target.add_entity_to_context.call_args_list[0][0][1])
        self.assertEqual('confidence_value_1_1',
                         target.add_entity_to_context.call_args_list[0][0][2])
        self.assertEqual('type_value_1_1',
                         target.add_entity_to_context.call_args_list[0][0][3])
        self.assertEqual('key_value_1_1',
                         target.add_entity_to_context.call_args_list[0][0][4])

        self.assertEqual("context_entities_1", actual)
Beispiel #17
0
    def test_regular(self):
        context_data = MagicMock()
        attribute_product_data = MagicMock()

        target = Target(context_data, attribute_product_data)
        target.entity_product_count_cache = MagicMock(side_effect=(100, 0))

        actual = target.add_product_counts([{
            "_id": 1,
            "key": "black",
            "type": "color"
        }, {
            "_id": 2,
            "key": "men",
            "type": "division"
        }])

        self.assertListEqual([{
            'meta': {
                'instock_product_count': 100
            },
            'type': 'color',
            '_id': 1,
            'key': 'black'
        }, {
            'meta': {
                'instock_product_count': 0
            },
            'type': 'division',
            '_id': 2,
            'key': 'men'
        }], actual)

        self.assertListEqual([call('color', 'black'),
                              call('division', 'men')],
                             target.entity_product_count_cache.call_args_list)