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'}} ] } } })
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])