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))
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"])
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)
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': {} })
def setUp(self): self.logger = PicklableMock() self.logger.exception = PicklableMock() self.config = PicklableMock() self.mock_rep = PicklableMock() self.monitoring = Monitoring() self.monitoring.apply_config({})
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])
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')
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))
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)
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
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)
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], [])
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)
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)
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)
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}])
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}])
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()))
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)
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())
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"]}