예제 #1
0
    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)
예제 #2
0
    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_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")