def test_node_action_support_templates(self):
        params = {
            "markup": "italic",
            "email": "*****@*****.**",
            "name": "Buratino"
        }
        items = {
            "support_templates": {
                "markup": "{%if markup=='italic'%}i{% else %}b{% endif %}",
                "email": "{%if email%}<{{markup}}>Email: {{email}}</{{markup}}>\n{% endif %}",
                "name": "{%if name%}<{{markup}}>Name: {{name}}</{{markup}}>\n{% endif %}",
                "result": "{{email}}{{name}}"
            },
            "nodes": {
                "answer": "{{result|trim}}"
            }
        }
        expected = "<i>Email: [email protected]</i>\n<i>Name: Buratino</i>"

        action = StringAction(items)
        for template_key, template in action.support_templates.items():
            self.assertIsInstance(template, UnifiedTemplate)
        user = MagicMock()
        user.parametrizer = MockSimpleParametrizer(user, {"data": params})
        output = action.run(user=user, text_preprocessing_result=None)[0].payload["answer"]
        self.assertEqual(output, expected)
 def test_string_action(self):
     expected = [
         Command("cmd_id", {
             "item": "template",
             "params": "params"
         })
     ]
     user = MagicMock()
     template = Mock()
     template.get_template = Mock(
         return_value=["nlpp.payload.personInfo.identityCard"])
     user.descriptions = {"render_templates": template}
     params = {"params": "params"}
     user.parametrizer = MockSimpleParametrizer(user, {"data": params})
     items = {
         "command": "cmd_id",
         "nodes": {
             "item": "template",
             "params": "{{params}}"
         }
     }
     action = StringAction(items)
     result = action.run(user, None)
     self.assertEqual(expected[0].name, result[0].name)
     self.assertEqual(expected[0].payload, result[0].payload)
 def test_string_action_support_templates(self):
     params = {"answer_text": "some_text", "buttons_number": 3}
     items = {
         "nodes": {
             "answer": "{{ answer_text }}",
             "buttons": {
                 "type": UNIFIED_TEMPLATE_TYPE_NAME,
                 "template": "{{range(buttons_number)|list}}",
                 "loader": "json"
             }
         }
     }
     expected = {"answer": "some_text", "buttons": [0, 1, 2]}
     action = StringAction(items)
     user = MagicMock()
     user.parametrizer = MockSimpleParametrizer(user, {"data": params})
     output = action.run(user=user,
                         text_preprocessing_result=None)[0].payload
     self.assertEqual(output, expected)
class NothingFoundAction(Action):
    version: Optional[int]
    id: Optional[str]

    def __init__(self, items: Dict[str, Any] = None, id: Optional[str] = None):
        super(NothingFoundAction, self).__init__(items, id)
        self._action = StringAction({"command": NOTHING_FOUND})

    def run(
        self,
        user: User,
        text_preprocessing_result: BaseTextPreprocessingResult,
        params: Optional[Dict[str, Union[str, float, int]]] = None
    ) -> Optional[List[Command]]:
        return self._action.run(user, text_preprocessing_result, params=params)
Exemple #5
0
 def command_action(self) -> StringAction:
     return StringAction(self._command_action)
 def __init__(self, items: Dict[str, Any] = None, id: Optional[str] = None):
     super(NothingFoundAction, self).__init__(items, id)
     self._action = StringAction({"command": NOTHING_FOUND})