Spaces:
Build error
Build error
Validify-testbot-1
/
botbuilder-python
/libraries
/botbuilder-dialogs
/tests
/choices
/test_choice_factory.py
| # Copyright (c) Microsoft Corporation. All rights reserved. | |
| # Licensed under the MIT License. | |
| import unittest | |
| from typing import List | |
| from botbuilder.dialogs.choices import Choice, ChoiceFactory, ChoiceFactoryOptions | |
| from botbuilder.schema import ( | |
| ActionTypes, | |
| Activity, | |
| ActivityTypes, | |
| Attachment, | |
| AttachmentLayoutTypes, | |
| CardAction, | |
| HeroCard, | |
| InputHints, | |
| SuggestedActions, | |
| ) | |
| from botframework.connector import Channels | |
| class ChoiceFactoryTest(unittest.TestCase): | |
| color_choices: List[Choice] = [Choice("red"), Choice("green"), Choice("blue")] | |
| choices_with_actions: List[Choice] = [ | |
| Choice( | |
| "ImBack", | |
| action=CardAction( | |
| type=ActionTypes.im_back, title="ImBack Action", value="ImBack Value" | |
| ), | |
| ), | |
| Choice( | |
| "MessageBack", | |
| action=CardAction( | |
| type=ActionTypes.message_back, | |
| title="MessageBack Action", | |
| value="MessageBack Value", | |
| ), | |
| ), | |
| Choice( | |
| "PostBack", | |
| action=CardAction( | |
| type=ActionTypes.post_back, | |
| title="PostBack Action", | |
| value="PostBack Value", | |
| ), | |
| ), | |
| ] | |
| def test_inline_should_render_choices_inline(self): | |
| activity = ChoiceFactory.inline(ChoiceFactoryTest.color_choices, "select from:") | |
| self.assertEqual("select from: (1) red, (2) green, or (3) blue", activity.text) | |
| def test_should_render_choices_as_a_list(self): | |
| activity = ChoiceFactory.list_style( | |
| ChoiceFactoryTest.color_choices, "select from:" | |
| ) | |
| self.assertEqual( | |
| "select from:\n\n 1. red\n 2. green\n 3. blue", activity.text | |
| ) | |
| def test_should_render_unincluded_numbers_choices_as_a_list(self): | |
| activity = ChoiceFactory.list_style( | |
| ChoiceFactoryTest.color_choices, | |
| "select from:", | |
| options=ChoiceFactoryOptions(include_numbers=False), | |
| ) | |
| self.assertEqual( | |
| "select from:\n\n - red\n - green\n - blue", activity.text | |
| ) | |
| def test_should_render_choices_as_suggested_actions(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| text="select from:", | |
| input_hint=InputHints.expecting_input, | |
| suggested_actions=SuggestedActions( | |
| actions=[ | |
| CardAction(type=ActionTypes.im_back, value="red", title="red"), | |
| CardAction(type=ActionTypes.im_back, value="green", title="green"), | |
| CardAction(type=ActionTypes.im_back, value="blue", title="blue"), | |
| ] | |
| ), | |
| ) | |
| activity = ChoiceFactory.suggested_action( | |
| ChoiceFactoryTest.color_choices, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |
| def test_should_render_choices_as_hero_card(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| input_hint=InputHints.expecting_input, | |
| attachment_layout=AttachmentLayoutTypes.list, | |
| attachments=[ | |
| Attachment( | |
| content=HeroCard( | |
| text="select from:", | |
| buttons=[ | |
| CardAction( | |
| type=ActionTypes.im_back, value="red", title="red" | |
| ), | |
| CardAction( | |
| type=ActionTypes.im_back, value="green", title="green" | |
| ), | |
| CardAction( | |
| type=ActionTypes.im_back, value="blue", title="blue" | |
| ), | |
| ], | |
| ), | |
| content_type="application/vnd.microsoft.card.hero", | |
| ) | |
| ], | |
| ) | |
| activity = ChoiceFactory.hero_card( | |
| ChoiceFactoryTest.color_choices, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |
| def test_should_automatically_choose_render_style_based_on_channel_type(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| text="select from:", | |
| input_hint=InputHints.expecting_input, | |
| suggested_actions=SuggestedActions( | |
| actions=[ | |
| CardAction(type=ActionTypes.im_back, value="red", title="red"), | |
| CardAction(type=ActionTypes.im_back, value="green", title="green"), | |
| CardAction(type=ActionTypes.im_back, value="blue", title="blue"), | |
| ] | |
| ), | |
| ) | |
| activity = ChoiceFactory.for_channel( | |
| Channels.emulator, ChoiceFactoryTest.color_choices, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |
| def test_should_choose_correct_styles_for_teams(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| input_hint=InputHints.expecting_input, | |
| attachment_layout=AttachmentLayoutTypes.list, | |
| attachments=[ | |
| Attachment( | |
| content=HeroCard( | |
| text="select from:", | |
| buttons=[ | |
| CardAction( | |
| type=ActionTypes.im_back, value="red", title="red" | |
| ), | |
| CardAction( | |
| type=ActionTypes.im_back, value="green", title="green" | |
| ), | |
| CardAction( | |
| type=ActionTypes.im_back, value="blue", title="blue" | |
| ), | |
| ], | |
| ), | |
| content_type="application/vnd.microsoft.card.hero", | |
| ) | |
| ], | |
| ) | |
| activity = ChoiceFactory.for_channel( | |
| Channels.ms_teams, ChoiceFactoryTest.color_choices, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |
| def test_should_include_choice_actions_in_suggested_actions(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| text="select from:", | |
| input_hint=InputHints.expecting_input, | |
| suggested_actions=SuggestedActions( | |
| actions=[ | |
| CardAction( | |
| type=ActionTypes.im_back, | |
| value="ImBack Value", | |
| title="ImBack Action", | |
| ), | |
| CardAction( | |
| type=ActionTypes.message_back, | |
| value="MessageBack Value", | |
| title="MessageBack Action", | |
| ), | |
| CardAction( | |
| type=ActionTypes.post_back, | |
| value="PostBack Value", | |
| title="PostBack Action", | |
| ), | |
| ] | |
| ), | |
| ) | |
| activity = ChoiceFactory.suggested_action( | |
| ChoiceFactoryTest.choices_with_actions, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |
| def test_should_include_choice_actions_in_hero_cards(self): | |
| expected = Activity( | |
| type=ActivityTypes.message, | |
| input_hint=InputHints.expecting_input, | |
| attachment_layout=AttachmentLayoutTypes.list, | |
| attachments=[ | |
| Attachment( | |
| content=HeroCard( | |
| text="select from:", | |
| buttons=[ | |
| CardAction( | |
| type=ActionTypes.im_back, | |
| value="ImBack Value", | |
| title="ImBack Action", | |
| ), | |
| CardAction( | |
| type=ActionTypes.message_back, | |
| value="MessageBack Value", | |
| title="MessageBack Action", | |
| ), | |
| CardAction( | |
| type=ActionTypes.post_back, | |
| value="PostBack Value", | |
| title="PostBack Action", | |
| ), | |
| ], | |
| ), | |
| content_type="application/vnd.microsoft.card.hero", | |
| ) | |
| ], | |
| ) | |
| activity = ChoiceFactory.hero_card( | |
| ChoiceFactoryTest.choices_with_actions, "select from:" | |
| ) | |
| self.assertEqual(expected, activity) | |