def test_SDKItemAnswer_suggestions_template(self):

        registered_factories[SdkAnswerItem] = items_factory
        answer_items["bubble_text"] = BubbleText

        user = Mock()
        user.parametrizer = MockParametrizer(user, {})
        items = {
            "type": "sdk_answer_to_user",
            "support_templates": {
                "suggestions_from_template": '{ "buttons": [ { "title": "some title", "action": { "type": "text", "text": "some text" } } ]}'
            },
            "suggestions_template": {
                "type": "unified_template",
                "template": "{{ suggestions_from_template }}",
                "loader": "json"
            }
        }
        action = SDKAnswerToUser(items)
        result = action.run(user, None)
        self.assertDictEqual(
            result[0].raw,
            {
                'message_name': 'ANSWER_TO_USER',
                'payload': {
                    'suggestions': {
                        'buttons': [
                            {'title': 'some title', 'action': {'type': 'text', 'text': 'some text'}}
                        ]
                    }
                }
            })
예제 #2
0
    def test_SDKItemAnswer_simple(self):

        registered_factories[SdkAnswerItem] = items_factory
        answer_items["bubble_text"] = BubbleText

        user = Mock()
        user.parametrizer = MockParametrizer(user, {})
        items = {
            "type": "sdk_answer_to_user",
            "items": [{
                'type': "bubble_text",
                "text": "42"
            }]
        }
        action = SDKAnswerToUser(items)
        result = action.run(user, None)
        self.assertDictEqual(
            result[0].raw, {
                'message_name': 'ANSWER_TO_USER',
                'payload': {
                    'items': [{
                        'bubble': {
                            'text': '42',
                            'markdown': True
                        }
                    }]
                }
            })
    def test_SDKItemAnswer_root(self):

        registered_factories[SdkAnswerItem] = items_factory
        answer_items["bubble_text"] = BubbleText
        answer_items["item_card"] = ItemCard
        answer_items["pronounce_text"] = PronounceText
        answer_items["suggest_text"] = SuggestText
        answer_items["suggest_deeplink"] = SuggestDeepLink


        user = Mock()
        user.parametrizer = MockParametrizer(user, {})
        user.message = Mock()
        user.message.payload = {"personInfo": {"name": "Ivan Ivanov"}}
        items = {
            "type": "sdk_answer_to_user",
            "static":
                {
                    "static_text": "st1",
                    "card1": {"cards_params": "a lot of params"},
                    "dl": "www.ww.w"
                },
            "random_choice": [
                {
                    "pron": "p1",
                    "txt": "{{payload.personInfo.name}}",
                    "title": "title1"
                },
                {
                    "pron": "p2",
                    "txt": "t2",
                    "title": "title2"
                }],
            "root":
                [
                    {
                        'type': "pronounce_text",
                        "text": "pron",
                    },
                ]
        }
        exp1 = "{'message_name': 'ANSWER_TO_USER', 'payload': {'pronounceText': 'p1'}}"
        exp2 = "{'message_name': 'ANSWER_TO_USER', 'payload': {'pronounceText': 'p2'}}"

        action = SDKAnswerToUser(items)
        for i in range(3):
            result = action.run(user, None)
            self.assertTrue(str(result[0].raw) in [exp1, exp2])
    def test_SDKItemAnswer_full(self):

        registered_factories[SdkAnswerItem] = items_factory
        answer_items["bubble_text"] = BubbleText
        answer_items["item_card"] = ItemCard
        answer_items["pronounce_text"] = PronounceText
        answer_items["suggest_text"] = SuggestText
        answer_items["suggest_deeplink"] = SuggestDeepLink

        registered_factories[Requirement] = requirement_factory
        requirements["test"] = MockRequirement
        requirements[None] = Requirement

        user = Mock()
        user.parametrizer = MockParametrizer(user, {})
        user.message = Mock()
        user.message.payload = {"personInfo": {"name": "Ivan Ivanov"}}
        items = {
            "type": "sdk_answer_to_user",
            "static":
                {
                    "static_text": "st1",
                    "card1": {"cards_params": "a lot of params"},
                    "dl": "www.ww.w"
                },
            "random_choice": [
                {
                    "pron": "p1",
                    "txt": "{{payload.personInfo.name}}",
                    "title": "title1"
                },
                {
                    "pron": "p2",
                    "txt": "t2",
                    "title": "title2"
                }],
            "items":
                [
                    {
                        'type': "item_card",
                        "text": "txt",
                        "requirement": {"type": "test", "result": False}
                    },
                    {
                        'type': "bubble_text",
                        "text": "txt",
                        "markdown": False
                    },
                    {
                        'type': "item_card",
                        "text": "card1",
                        "requirement": {"type": "test", "result": True}
                    }
                ],
            "root":
                [
                    {
                        'type': "pronounce_text",
                        "text": "pron",
                    }
                ],
            "suggestions":
                [
                    {
                        "type": "suggest_text",
                        "title": "pron",
                        "text": "txt",
                    },
                    {
                        "type": "suggest_text",
                        "title": "pron",
                        "text": "txt",
                        "requirement": {"type": "test", "result": True}
                    },
                    {
                        "type": "suggest_deeplink",
                        "title": "pron",
                        "deep_link": "dl"
                    }
                ]
        }
        exp1 = "{'message_name': 'ANSWER_TO_USER', 'payload': {'items': [{'bubble': {'text': 't2', 'markdown': False}}, {'card': {'cards_params': 'a lot of params'}}], 'suggestions': {'buttons': [{'title': 'p2', 'action': {'text': 't2', 'type': 'text'}}, {'title': 'p2', 'action': {'text': 't2', 'type': 'text'}}, {'title': 'p2', 'action': {'deep_link': 'www.ww.w', 'type': 'deep_link'}}]}, 'pronounceText': 'p2'}}"
        exp2 = "{'message_name': 'ANSWER_TO_USER', 'payload': {'items': [{'bubble': {'text': 'Ivan Ivanov', 'markdown': False}}, {'card': {'cards_params': 'a lot of params'}}], 'suggestions': {'buttons': [{'title': 'p1', 'action': {'text': 'Ivan Ivanov', 'type': 'text'}}, {'title': 'p1', 'action': {'text': 'Ivan Ivanov', 'type': 'text'}}, {'title': 'p1', 'action': {'deep_link': 'www.ww.w', 'type': 'deep_link'}}]}, 'pronounceText': 'p1'}}"

        action = SDKAnswerToUser(items)
        for i in range(3):
            result = action.run(user, None)
            self.assertTrue(str(result[0].raw) in [exp1, exp2])