示例#1
0
 def test_topic_requirement(self):
     requirement = TopicRequirement({"topics": ["test"]})
     user = PicklableMock()
     message = PicklableMock()
     message.topic_key = "test"
     user.message = message
     self.assertTrue(requirement.check(None, user))
示例#2
0
 def test_fill_field(self):
     params = {"test_field": "test_data"}
     data = {
         "form": "test_form",
         "field": "test_field",
         "internal_form": "test_internal_form",
         "data_path": "{{test_field}}",
         "parametrizer": {
             "data": params
         }
     }
     action = CompositeFillFieldAction(data)
     user = PicklableMock()
     user.parametrizer = MockParametrizer(user, {"data": params})
     form = PicklableMock()
     internal_form = PicklableMock()
     form.forms = {"test_internal_form": internal_form}
     user.forms = {"test_form": form}
     field = PicklableMock()
     field.fill = PicklableMock()
     user.forms["test_form"].forms["test_internal_form"].fields = {
         "test_field": field
     }
     action.run(user, None)
     field.fill.assert_called_once_with(params["test_field"])
示例#3
0
    def test_form_field_value_requirement_false(self):
        """Тест кейз проверяет что условие возвращает False, т.к в
        форме form_name в поле form_field значение НЕ совпадает с переданным field_value.
        """
        form_name = "test_form"
        form_field = "test_field"
        field_value = "test_value"

        test_itmes = {
            "form_name": form_name,
            "field_name": form_field,
            "value": field_value
        }
        req_form_field_value = FormFieldValueRequirement(test_itmes)

        user = PicklableMock()
        user.forms = {form_name: PicklableMock()}
        user.forms[form_name].fields = {
            form_field: PicklableMock(),
            "value": "OTHER_TEST_VAL"
        }
        user.forms[form_name].fields[form_field].value = "OTHER_TEST_VAL"

        result = req_form_field_value.check(PicklableMock(), user)
        self.assertFalse(result)
示例#4
0
 def test_action_1(self):
     data = {
         "behavior": "test",
         "check_scenario": False,
         "command_action": {
             "command": "cmd_id",
             "nodes": {},
             "request_data": {}
         }
     }
     registered_factories[Action] = action_factory
     actions["action_mock"] = MockAction
     self.user.parametrizer = MockParametrizer(self.user, {})
     self.user.message = PicklableMock()
     local_vars = PicklableMock()
     local_vars.values = dict()
     self.user.local_vars = local_vars
     test_incremental_id = "test_incremental_id"
     self.user.message.incremental_id = test_incremental_id
     behavior = PicklableMock()
     behavior.check_got_saved_id = Mock(return_value=False)
     self.user.behaviors = behavior
     action = SelfServiceActionWithState(data)
     text_preprocessing_result_raw = PicklableMock()
     text_preprocessing_result = Mock(raw=text_preprocessing_result_raw)
     result = action.run(self.user, text_preprocessing_result, None)
     behavior.check_got_saved_id.assert_called_once()
     behavior.add.assert_called_once()
     self.assertEqual(result[0].name, "cmd_id")
     self.assertEqual(result[0].raw, {
         'messageName': 'cmd_id',
         'payload': {}
     })
示例#5
0
 def setUp(self):
     self.logger = PicklableMock()
     self.logger.exception = PicklableMock()
     self.config = PicklableMock()
     self.mock_rep = PicklableMock()
     self.monitoring = Monitoring()
     self.monitoring.apply_config({})
示例#6
0
 def setUp(self):
     self.max_delay = 1
     self.max_delay_s = self.max_delay * 60
     self.delay_runner = DelayRunner(1)
     self.run = PicklableMock()
     self.arg = PicklableMock()
     self.delay_runner.schedule_run(self.run, [self.arg])
示例#7
0
 def test_raw(self):
     user = PicklableMock()
     forms = Forms(self.mock_1, {
         "sbm_credit": PicklableMock(),
         "Turn_on_MB": PicklableMock()
     }, user)
     expected_dict = {
         'sbm_credit': {
             'fields': {
                 'amount': {
                     'value': 100.0
                 },
                 'currency': {
                     "required":
                     True,
                     "filler": {
                         "type": "currency_first"
                     },
                     "questions": [{
                         "type": "external",
                         "action": "sbm_currency_question"
                     }]
                 }
             },
             'remove_time': 1506418333
         },
         'Turn_on_MB': {
             'remove_time': 2506421370
         }
     }
     self.assertDictEqual(forms.raw, expected_dict)
 def setUp(self):
     self.test_items1 = {
         "123-ASDF": {
             "behavior_id": 11,
             "expire_time": time.time() + 10,
             "scenario_id": 22,
             "text_preprocessing_result": {},
             "action_params": {}
         }
     }
     self.test_items2 = {
         "123-ASDF": {
             "behavior_id": 11,
             "expire_time": time.time(),
             "scenario_id": 22,
             "text_preprocessing_result": {},
             "action_params": {}
         }
     }
     self.test_user = Mock('User')
     self.test_user.id = 111
     self.test_user.message = PicklableMock()
     self.test_user.message.incremental_id = 123
     self.test_user.message.logging_uuid = 222
     self.test_user.settings = PicklableMock()
     self.test_user.settings.app_name = "test"
     self.test_descriptions = Mock('Descriptions')
示例#9
0
 def test_template_req_false(self):
     items = {"template": "{{ payload.groupCode == 'BROKER' }}"}
     requirement = TemplateRequirement(items)
     params = {"payload": {"groupCode": "BROKER1"}}
     user = PicklableMock()
     user.parametrizer = PicklableMock()
     user.parametrizer.collect = Mock(return_value=params)
     self.assertFalse(requirement.check(None, user))
示例#10
0
 def test_template_req_raise(self):
     items = {"template": "{{ payload.groupCode }}"}
     requirement = TemplateRequirement(items)
     params = {"payload": {"groupCode": "BROKER1"}}
     user = PicklableMock()
     user.parametrizer = PicklableMock()
     user.parametrizer.collect = Mock(return_value=params)
     self.assertRaises(TypeError, requirement.check, None, user)
示例#11
0
 def setUpClass(cls):
     user = PicklableMock()
     user.message = PicklableMock()
     user.parametrizer = MockParametrizer(user, {})
     user.last_scenarios.last_scenario_name = "scenario_id"
     test_incremental_id = "test_incremental_id"
     user.message.incremental_id = test_incremental_id
     cls.user = user
示例#12
0
 def test_remove(self):
     user = PicklableMock()
     forms = Forms(self.mock_1, {
         "sbm_credit": PicklableMock(),
         "Turn_on_MB": PicklableMock()
     }, user)
     forms.remove_item("sbm_credit")
     expected_dict = {"Turn_on_MB": {'remove_time': 2506421370}}
     self.assertDictEqual(forms.raw, expected_dict)
示例#13
0
 def setUp(self):
     user = PicklableMock()
     user.parametrizer = MockParametrizer(user, {})
     user.message = PicklableMock()
     user.message.payload = {"some_value": "some_value_test"}
     user.person_info = PicklableMock()
     user.variables = PicklableMagicMock()
     user.variables.delete = PicklableMock()
     self.user = user
 def test_clear(self):
     user = PicklableMock()
     items = [{"ts": 35343820800, "message": {"test": 567}, "direction": "incoming"}]
     description = PicklableMock()
     description.max_message_count = 1
     description.lifetime = 10
     preprocessing_messages = PreprocessingScenariosMessages(items, description, user)
     preprocessing_messages.clear()
     self.assertListEqual([item for item in preprocessing_messages.processed_items], [])
示例#15
0
 def setUp(self):
     template = PicklableMock()
     template.get_template = Mock(return_value=[])
     user = PicklableMock()
     user.parametrizer = MockParametrizer(user, {})
     user.message = PicklableMock()
     user.person_info = PicklableMock()
     user.descriptions = {"render_templates": template}
     self.user = user
 def test_first_try_failed(self):
     self.param = PicklableMock()
     self.param1 = {"param1_name": PicklableMock()}
     self.action = Mock(
         side_effect=[HandledException(), self.expected_value])
     result = self.rerunable.run(self.action, self.param, **self.param1)
     self.action.assert_called_with(self.param, **self.param1)
     self.assertEqual(self.action.call_count, self.try_count)
     self.assertEqual(result, self.expected_value)
 def test_clear_removed_items(self):
     raw_data = {}
     user = PicklableMock()
     description = PicklableMock()
     factory = Mock(raw_data, description, user)
     items = {"1": "test1", "2": "test2", "3": "test3"}
     raw_description = {"1": "test1", "2": "test2"}
     descriptions = MockDescriptions(factory, raw_description)
     items = LazyItems(items, descriptions, user, factory)
     self.assertEqual(items._raw_items, raw_description)
示例#18
0
 def test_scenario_action_without_jinja(self):
     action = RunScenarioAction({"scenario": "next_scenario"})
     user = PicklableMock()
     user.parametrizer = MockParametrizer(user, {})
     scen = PicklableMock()
     scen_result = 'done'
     scen.run.return_value = scen_result
     user.descriptions = {"scenarios": {"next_scenario": scen}}
     result = action.run(user, PicklableMock())
     self.assertEqual(result, scen_result)
示例#19
0
 def test_any_substring_in_lowered_text_requirement_false(self):
     """Тест кейз проверяет что условие возвращает False, т.к НЕ нашлась ни одна подстрока из списка substrings,
     которая бы встречалась в оригинальном тексте в нижнем регистре.
     """
     req = AnySubstringInLoweredTextRequirement(
         {"substrings": ["искомая подстрока", "другая подстрока"]})
     text_preprocessing_result = PicklableMock()
     text_preprocessing_result.raw = {"original_text": "КАКОЙ-ТО ТЕКСТ"}
     result = req.check(text_preprocessing_result, PicklableMock())
     self.assertFalse(result)
示例#20
0
    def test_1(self):
        expected = "my_value"
        mock_user = PicklableMock()
        mock_user.settings = {"template_settings": {}}
        description = PicklableMock()
        lifetime = 10
        items = {"value": expected, "available": False}
        field = QuestionField(description, items, mock_user, lifetime)

        result = field.value
        self.assertEqual(expected, result)
 def test_add_1(self):
     user = PicklableMock()
     items = None
     description = PicklableMock()
     description.max_message_count = 3
     description.lifetime = 10
     preprocessing_messages = PreprocessingScenariosMessages(items, description, user)
     text_preprocessing_result = PicklableMock()
     text_preprocessing_result.raw = {"test": 123}
     preprocessing_messages.add(text_preprocessing_result)
     self.assertEqual([item for item in preprocessing_messages.processed_items], [{"test": 123}])
示例#22
0
    def test_action_with_empty_scenarios_names(self):
        user = PicklableMock()
        user.forms = PicklableMock()

        user.last_scenarios.last_scenario_name = "test_scenario"

        action = ClearScenarioByIdAction({})
        result = action.run(user, {}, {})
        self.assertIsNone(result)
        user.last_scenarios.delete.assert_not_called()
        user.forms.remove_item.assert_not_called()
 def test_template_in_array_req_true(self):
     items = {
         "template": "{{ payload.userInfo.tbcode }}",
         "items": ["32", "33"]
     }
     requirement = TemplateInArrayRequirement(items)
     params = {"payload": {"userInfo": {"tbcode": "32"}, "message": "BBB"}}
     user = PicklableMock()
     user.parametrizer = PicklableMock()
     user.parametrizer.collect = Mock(return_value=params)
     self.assertTrue(requirement.check(None, user))
 def test_add_3(self):
     user = PicklableMock()
     items = [{"ts": 35343820800, "message": {"test": 567}, "direction": "incoming"}]
     description = PicklableMock()
     description.max_message_count = 1
     description.lifetime = 10
     preprocessing_messages = PreprocessingScenariosMessages(items, description, user)
     text_preprocessing_result = PicklableMock()
     text_preprocessing_result.raw = {"test": 123}
     preprocessing_messages.add(text_preprocessing_result)
     self.assertListEqual([item for item in preprocessing_messages.processed_items], [{"test": 123}])
示例#25
0
 def test_phone_number_number_requirement_false(self):
     """Тест кейз проверяет что условие возвращает False, т.к кол-во номеров телефонов НЕ больше заданного."""
     req = PhoneNumberNumberRequirement(
         {"operator": {
             "type": "more",
             "amount": 10
         }})
     text_preprocessing_result = PicklableMock()
     text_preprocessing_result.get_token_values_by_type.return_value = [
         "89030478799"
     ]
     self.assertFalse(req.check(text_preprocessing_result, PicklableMock()))
示例#26
0
 def test_any_substring_in_lowered_text_requirement_true(self):
     """Тест кейз проверяет что условие возвращает True, т.к нашлась подстрока из списка substrings, которая
     встречается в оригинальном тексте в нижнем регистре.
     """
     req = AnySubstringInLoweredTextRequirement(
         {"substrings": ["искомая подстрока", "другое знанчение"]})
     text_preprocessing_result = PicklableMock()
     text_preprocessing_result.raw = {
         "original_text": "КАКОЙ-ТО ТЕКСТ С ИСКОМАЯ ПОДСТРОКА"
     }
     result = req.check(text_preprocessing_result, PicklableMock())
     self.assertTrue(result)
示例#27
0
 def mock_and_perform_action(
         test_items: Dict[str, Any],
         expected_result: Optional[str] = None,
         expected_scen: Optional[str] = None) -> Union[str, None]:
     action = ChoiceScenarioAction(test_items)
     user = PicklableMock()
     user.parametrizer = MockParametrizer(user, {})
     scen = PicklableMock()
     scen.run.return_value = expected_result
     if expected_scen:
         user.descriptions = {"scenarios": {expected_scen: scen}}
     return action.run(user, PicklableMock())
示例#28
0
    def test_action(self):
        user = PicklableMock()
        user.forms = PicklableMock()
        user.last_scenarios.last_scenario_name = 'test_scenario'
        scenario_model = PicklableMock()
        scenario_model.current_node = 'some_node'
        user.scenario_models = {'test_scenario': scenario_model}

        action = ResetCurrentNodeAction({})
        result = action.run(user, {}, {})
        self.assertIsNone(result)
        self.assertIsNone(user.scenario_models['test_scenario'].current_node)
 def test_fill_1(self):
     registered_factories[FieldFillerDescription] = field_filler_factory
     field_filler_description["mock_filler"] = MockFiller
     expected = "first"
     items = {"filler": {"type": "mock_filler", "result": expected}}
     user = PicklableMock()
     user.preprocessing_messages_for_scenarios = PicklableMock()
     user.preprocessing_messages_for_scenarios.processed_items = [{}, {},
                                                                  {}]
     filler = PreviousMessagesFiller(items)
     filler.extract(None, user)
     self.assertEqual(filler.filler.count, 4)
    def setUp(self):
        test_items = {
            "type": "classifier_meta",
            "intents": ["да", "нет"],
            "classifier": {"type": "external", "classifier": "hello_scenario_classifier"}
        }
        self.filler_meta = ClassifierFillerMeta(test_items)

        self.mock_text_preprocessing_result = PicklableMock()
        self.mock_user = PicklableMock()
        self.mock_user.descriptions = {
            "external_classifiers": ["read_book_or_not_classifier", "hello_scenario_classifier"]}