def test_datetime_requirement_false(self): user = PicklableMock() user.id = "353454" user.message.payload = { "meta": { "time": { "timestamp": 1610979455663, # ~ 2021-01-18 17:17:35 "timezone_offset_sec": 1000000000, # shouldn't affect } } } requirement = DateTimeRequirement({"match_cron": "* * * * 6,7"}) text_normalization_result = None self.assertFalse(requirement.check(text_normalization_result, user))
def test_time_requirement_false(self): user = PicklableMock() user.id = "353454" user.message.payload = { "meta": { "time": { "timestamp": 1610979455663, # ~ 2021-01-18 17:17:35 "timezone_offset_sec": 1000000000, # shouldn't affect } } } requirement = TimeRequirement( {"operator": { "type": "more", "amount": "18:00:00", }}) text_normalization_result = None self.assertFalse(requirement.check(text_normalization_result, user))
def test_3(self): expected = "prev_value" mock_user = PicklableMock() mock_user.last_fields = PicklableMagicMock() value_mock = PicklableMock() value_mock.value = "prev_value" mock_user.last_fields.__getitem__.return_value = value_mock mock_user.settings = {"template_settings": {}} description = PicklableMock() description.need_load_context = True description.id = 5 lifetime = 10 items = None field = QuestionField(description, items, mock_user, lifetime) result = field.value self.assertEqual(expected, result)
def test_action_with_jinja(self): scenario = PicklableMock() scenario.id = 'name' scenario.version = '1.0' self.user.descriptions = {'scenarios': {'test_scenario': scenario}} items = { 'event_type': 'type', 'event_content': { 'field_1': '{{ main_form.field_1 }}' }, 'results': '{{ message.name }}' } expected = Event(type='type', results='CLIENT_INFO_RESPONSE', content={'field_1': 'value_1'}, scenario='name', scenario_version='1.0') action = AddHistoryEventAction(items) action.run(self.user, None, None) self.user.history.add_event.assert_called_once() self.user.history.add_event.assert_called_once_with(expected)
def test_action_with_non_empty_scenario(self): scenario = PicklableMock() scenario.id = 'name' scenario.version = '1.0' self.user.descriptions = {'scenarios': {'test_scenario': scenario}} items = { 'event_type': 'type', 'event_content': { 'foo': 'bar' }, 'results': 'result' } expected = Event(type='type', results='result', content={'foo': 'bar'}, scenario='name', scenario_version='1.0') action = AddHistoryEventAction(items) action.run(self.user, None, None) self.user.history.add_event.assert_called_once() self.user.history.add_event.assert_called_once_with(expected)
def test_7_3(self): expected = "some_value" mock_value = PicklableMock() mock_value.value = None mock_user = PicklableMagicMock() mock_user.last_fields = PicklableMagicMock() mock_user.last_fields.__getitem__.return_value = mock_value description = PicklableMock() description.id = 5 description.default_value = expected description.available = True description.need_save_context = True lifetime = 10 items = {"value": "my_value", "available": True} field = QuestionField(description, items, mock_user, lifetime) field.fill(expected) result = field.value self.assertEqual(expected, result) self.assertEqual(expected, mock_value.value)
def test_rolling_requirement_false(self): user = PicklableMock() user.id = "353454" requirement = RollingRequirement({"percent": 0}) text_normalization_result = None self.assertFalse(requirement.check(text_normalization_result, user))
def test_breake(self): """ Тест проверяет выход из сценария если сработает флаг break_scenario """ registered_factories[Action] = action_factory actions["test"] = MockAction actions["break"] = MockAction actions["success"] = MockAction form_type = "form for doing smth" internal_form_key = "my form key" node_mock = { "form_key": internal_form_key, "actions": [{ "type": "test", "command": "jump", "nodes": {} }] } items = { "channels": "web", "form": form_type, "start_node_key": "node_1", "scenario_nodes": { "node_1": node_mock }, "actions": [{ "type": "success" }] } field_descriptor = PicklableMock(name="field_descriptor_mock") field_descriptor.filler.extract = PicklableMock( name="my_field_value_1", return_value=61) field_descriptor.fill_other = False field_descriptor.field_validator.actions = [] field_descriptor.on_filled_actions = [ BreakAction(), MockAction(command_name="break action result") ] field_descriptor.id = "age" internal_form = PicklableMock(name="internal_form_mock") internal_form.description.fields.items = PicklableMock( return_value=[("age", field_descriptor)]) internal_form.field.field_validator.requirement.check = PicklableMock( return_value=True) field = PicklableMock() field.description = field_descriptor field.value = 61 internal_form.fields = {field_descriptor: field, "age": field} internal_form.is_valid = PicklableMock(return_value=True) start_form_mock = PicklableMagicMock(name="start_form_mock") composite_form = PicklableMagicMock(name="form_mock") composite_form.forms = start_form_mock composite_form.set_valid = PicklableMock() context_forms = PicklableMagicMock(name="context_form_mock") context_forms.new = PicklableMock( return_value=PicklableMock(forms={"my form key": internal_form}, is_endless=PicklableMock( return_value=False))) current_node_mock = PicklableMock(name="current_node_mock") current_node_mock.form_key = "start_node_mock" current_node_mock.available_nodes = False user = PicklableMock() user.forms = context_forms user.scenario_models = PicklableMagicMock() user.scenario_models.__getitem__ = PicklableMock( name="scenario_mock", return_value=current_node_mock) text_preprocessing_result = None scenario = TreeScenario(items, 1) result = scenario.run(text_preprocessing_result, user) self.assertFalse(scenario.actions[0].called) self.assertEqual(result[0].name, "break action result")