class TreeFormsTest(TestCase): def setUp(self): self.form = TreeForm() self.field = self.form.add_field('one') self.subform = TreeForm() self.subform.add_field('two', validators=[NotEmpty()]) self.form.add_sub_form(self.subform) def _get_raw_data(self, value='value3'): raw_data = { self.form.form_name_value: [self.form.get_name(), ], self.form.fields['one'].get_name(): ['value1'], } name = ( self.form.get_or_create_sub_form('TreeForm', 2) .fields['two'].get_name() ) raw_data[name] = ['value2.1', 'value2.2'] name = ( self.form.get_or_create_sub_form('TreeForm', 3) .fields['two'].get_name() ) raw_data[name] = [value] return raw_data def test_parse_tree(self): raw_data = self._get_raw_data() self.form.validate(raw_data) assert self.form.fields['one'].values[0].value == 'value1' field = self.form.get_sub_form('TreeForm', 2).fields['two'] assert field.values[0].value == 'value2.1' assert field.values[1].value == 'value2.2' field = self.form.get_sub_form('TreeForm', 3).fields['two'] assert field.values[0].value == 'value3' def test_validation(self): raw_data = self._get_raw_data('') self.form.validate(raw_data) assert self.form.success is False field = self.form.get_sub_form('TreeForm', 2).fields['two'] assert field.error is False field = self.form.get_sub_form('TreeForm', 3).fields['two'] assert field.error is True
class GetDataDictTreeTest(TestCase): def setUp(self): super().setUp() self.form = TreeForm() self.form.add_field('name1') subform = TreeForm() subform.add_field('name2') self.form.add_sub_form(subform) data = { self.form.form_name_value: [self.form.get_name()], self.form.fields['name1'].get_name(): ['one'], ( self.form.get_or_create_sub_form('TreeForm', 0) .fields['name2'].get_name() ): [ 'two', 'three'], ( self.form.get_or_create_sub_form('TreeForm', 1) .fields['name2'].get_name() ): [ 'four'], ( self.form.get_or_create_sub_form('TreeForm', 2) .fields['name2'].get_name() ): [], } self.form.validate(data) def test_tree(self): assert self.form.get_data_dict() == { 'name1': ['one'], 'TreeForm': { 0: {'name2': ['two', 'three']}, 1: {'name2': ['four']}, 2: {'name2': []}, } } def test_tree_minified(self): assert self.form.get_data_dict(True) == { 'name1': 'one', 'TreeForm': { 0: {'name2': ['two', 'three']}, 1: {'name2': 'four'}, 2: {}, } }
def test_reset(self): field = create_autospec(Field('name')) form = TreeForm() form.add_field_object(field) form2 = create_autospec(TreeForm()) form2_name = form2.get_name.return_value form.add_sub_form(form2) form.get_or_create_sub_form(form2_name, 3) form.success = False form.reset() assert form.success is None field.reset.assert_called_once_with() assert len(form.childs[form2_name]) == 1 form2.reset.assert_called_once_with()
def test_get_name_tree_with_index(self): form = TreeForm() form2 = TreeForm() form2.add_field('name1') form.add_sub_form(form2) field = form.get_or_create_sub_form('TreeForm', 2).fields['name1'] raw = field.get_name() json = urlsafe_b64decode(raw).decode() data = loads(json) assert data == { 'name': 'name1', 'parents': [ {'name': 'TreeForm', 'index': None}, {'name': 'TreeForm', 'index': 2}, ], }