Exemplo n.º 1
0
    def test_parse_test_data(self):
        form = TreeForm()
        form.add_field('name')
        form.add_field('second')
        form2 = TreeForm()
        form2.add_field('surname')
        form.add_sub_form(form2)

        form.parse_dict({
            'name': ['n1'],
            'second': 'n2',
            'TreeForm': [{
                'surname': ['s1']
            }]
        })

        assert form.get_value('name') == 'n1'
        assert form.get_value('second') == 'n2'
Exemplo n.º 2
0
class GetReportTreeTest(TestCase):

    def setUp(self):
        super().setUp()
        self.form = TreeForm()
        self.form.add_field('name1', validators=[NotEmpty()])
        self.form.add_field('name2', validators=[IsDigit()])
        self.form_validator = ExampleFormValidator()
        self.form.add_form_validator(self.form_validator)
        self.child = TreeForm()
        self.child.add_field('name1', validators=[NotEmpty()])
        self.child.add_field('name2', validators=[IsDigit()])
        self.child_validator = ExampleFormValidator()
        self.child.add_form_validator(self.child_validator)
        self.form.add_sub_form(self.child)

    def run_form(self):
        data = {
            self.form.form_name_value: [self.form.get_name()]
        }
        return self.form.validate(data)

    def test_success(self):
        self.form.parse_dict({
            'name1': ['one'],
            'TreeForm': [
                {
                    'name1': ['two'],
                }
            ]
        })
        assert self.run_form() is True

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': [],
                                'success': True,
                                'values': [
                                    {
                                        'messages': [],
                                        'success': True,
                                        'value': 'two'
                                    }
                                ]
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': [],
                        'success': True
                    }
                }
            },
            'success': True,
            'messages': [],
            'fields': {
                'name1': {
                    'success': True,
                    'messages': [],
                    'values': [{
                        'value': 'one',
                        'success': True,
                        'messages': [],
                    }]
                },
                'name2': {
                    'success': True,
                    'messages': [],
                    'values': []
                },
            },
        }

    def test_error_at_form_validator(self):
        self.form.parse_dict({
            'name1': ['one'],
            'TreeForm': [
                {
                    'name1': ['two'],
                }
            ]
        })
        self.form_validator._validate = False
        assert self.run_form() is False

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': [],
                                'success': True,
                                'values': [
                                    {
                                        'messages': [],
                                        'success': True,
                                        'value': 'two'
                                    }
                                ]
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': [],
                        'success': True
                    }
                }
            },
            'success': False,
            'messages': ['example validator'],
            'fields': {
                'name1': {
                    'success': True,
                    'messages': [],
                    'values': [{
                        'value': 'one',
                        'success': True,
                        'messages': [],
                    }]
                },
                'name2': {
                    'success': True,
                    'messages': [],
                    'values': []
                },
            },
        }

    def test_error_at_field_validator_with_compiling(self):
        self.form.parse_dict({
            'TreeForm': [
                {
                    'name1': ['two'],
                }
            ]
        })
        assert self.run_form() is False

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': [],
                                'success': True,
                                'values': [
                                    {
                                        'messages': [],
                                        'success': True,
                                        'value': 'two'
                                    }
                                ]
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': [],
                        'success': True
                    }
                }
            },
            'success': False,
            'messages': [],
            'fields': {
                'name1': {
                    'success': False,
                    'messages': ['NotEmpty'],
                    'values': []
                },
                'name2': {
                    'success': True,
                    'messages': [],
                    'values': []
                },
            },
        }

    def test_error_at_field_value_validator(self):
        self.form.parse_dict({
            'name1': ['one'],
            'name2': ['three'],
            'TreeForm': [
                {
                    'name1': ['two'],
                }
            ]
        })
        assert self.run_form() is False

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': [],
                                'success': True,
                                'values': [
                                    {
                                        'messages': [],
                                        'success': True,
                                        'value': 'two'
                                    }
                                ]
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': [],
                        'success': True
                    }
                }
            },
            'success': False,
            'messages': [],
            'fields': {
                'name1': {
                    'success': True,
                    'messages': [],
                    'values': [{
                        'value': 'one',
                        'success': True,
                        'messages': [],
                    }]
                },
                'name2': {
                    'success': False,
                    'messages': [],
                    'values': [{
                        'value': 'three',
                        'success': False,
                        'messages': ['IsDigit'],
                    }]
                },
            },
        }

    def test_subform_error_at_form_validator(self):
        self.form.parse_dict({
            'name1': ['one'],
            'TreeForm': [
                {
                    'name1': ['two'],
                }
            ]
        })
        self.child_validator._validate = False
        assert self.run_form() is False

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': [],
                                'success': True,
                                'values': [
                                    {
                                        'messages': [],
                                        'success': True,
                                        'value': 'two'
                                    }
                                ]
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': ['example validator'],
                        'success': False
                    }
                }
            },
            'success': False,
            'messages': [],
            'fields': {
                'name1': {
                    'success': True,
                    'messages': [],
                    'values': [{
                        'value': 'one',
                        'success': True,
                        'messages': [],
                    }]
                },
                'name2': {
                    'success': True,
                    'messages': [],
                    'values': []
                },
            },
        }

    def test_subform_error_at_field_value_validator(self):
        self.form.parse_dict({
            'name1': ['one'],
            'TreeForm': [
                {
                    'name1': [],
                }
            ]
        })
        assert self.run_form() is False

        assert self.form.get_report() == {
            'childs': {
                'TreeForm': {
                    0: {
                        'childs': {},
                        'fields': {
                            'name1': {
                                'messages': ['NotEmpty'],
                                'success': False,
                                'values': []
                            },
                            'name2': {
                                'messages': [],
                                'success': True,
                                'values': []
                            }
                        },
                        'messages': [],
                        'success': False
                    }
                }
            },
            'success': False,
            'messages': [],
            'fields': {
                'name1': {
                    'success': True,
                    'messages': [],
                    'values': [{
                        'value': 'one',
                        'success': True,
                        'messages': [],
                    }]
                },
                'name2': {
                    'success': True,
                    'messages': [],
                    'values': []
                },
            },
        }