Тип виджета поля тестирования - PullRequest
0 голосов
/ 01 июня 2018

Я пишу тесты из формы модели Django:

class TemplateFieldTextForm(forms.ModelForm):
    class Meta:
        model = TemplateFieldText
        fields = []

    def __init__(self, *args, **kwargs):
        super(TemplateFieldTextForm, self).__init__(*args, **kwargs)
        field = self.instance.template_field
        label = field.label or var_to_proper(field.identifier)

        if field.input_type == 'text_area':
            self.fields['text'] = forms.CharField(label=label, required=field.required, widget=forms.Textarea)
        else:
            self.fields['text'] = forms.CharField(label=label, required=field.required)

Я пытаюсь проверить, что установлен правильный виджет для поля text, например:

def test_submit_with_char_field(self):
    template_field = mommy.make(TemplateField, label='char_field')
    template_field_text = mommy.make(TemplateFieldText, template_field=template_field,
                                     award_process=self.award_process)
    form_data = {
        'text': 'some text'
    }
    form = TemplateFieldTextForm(form_data, instance=template_field_text)
    self.assertEqual(form.fields['text'].widget.__class__.__name__, 'TextInput')

Однако виджет, похоже, всегда является виджетом Textarea, а не стандартным TextInput.Когда я проверяю форму в фактическом отображаемом шаблоне, форма действительно изменяется, как и ожидалось.Любые идеи относительно того, где я иду не так в тестах?

1 Ответ

0 голосов
/ 01 июня 2018

Оказывается, я устанавливал неправильное значение поля модели.

template_field = mommy.make(TemplateField, label='char_field')

должно быть:

template_field = mommy.make(TemplateField, input_type='char_field')
...