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