~ubuntu-branches/ubuntu/quantal/python-django/quantal-security

« back to all changes in this revision

Viewing changes to tests/regressiontests/model_formsets_regress/tests.py

  • Committer: Bazaar Package Importer
  • Author(s): Jamie Strandboge
  • Date: 2010-10-12 11:34:35 UTC
  • mfrom: (1.2.7 upstream)
  • mto: This revision was merged to the branch mainline in revision 30.
  • Revision ID: james.westby@ubuntu.com-20101012113435-9lnsrh0i3mxozbt0
Tags: upstream-1.2.3
ImportĀ upstreamĀ versionĀ 1.2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from django.forms.models import modelform_factory, inlineformset_factory
 
1
from django import forms
 
2
from django.forms.models import modelform_factory, inlineformset_factory, modelformset_factory
2
3
from django.test import TestCase
3
4
 
4
5
from models import User, UserSite, Restaurant, Manager
5
6
 
 
7
 
6
8
class InlineFormsetTests(TestCase):
7
9
    def test_formset_over_to_field(self):
8
10
        "A formset over a ForeignKey with a to_field can be saved. Regression for #10243"
156
158
        # you can create a formset with an instance of None
157
159
        form = Form(instance=None)
158
160
        formset = FormSet(instance=None)
 
161
 
 
162
 
 
163
class CustomWidget(forms.CharField):
 
164
    pass
 
165
 
 
166
 
 
167
class UserSiteForm(forms.ModelForm):
 
168
    class Meta:
 
169
        model = UserSite
 
170
        widgets = {'data': CustomWidget}
 
171
 
 
172
 
 
173
class Callback(object):
 
174
 
 
175
    def __init__(self):
 
176
        self.log = []
 
177
 
 
178
    def __call__(self, db_field, **kwargs):
 
179
        self.log.append((db_field, kwargs))
 
180
        return db_field.formfield(**kwargs)
 
181
 
 
182
 
 
183
class FormfieldCallbackTests(TestCase):
 
184
    """
 
185
    Regression for #13095: Using base forms with widgets
 
186
    defined in Meta should not raise errors.
 
187
    """
 
188
 
 
189
    def test_inlineformset_factory_default(self):
 
190
        Formset = inlineformset_factory(User, UserSite, form=UserSiteForm)
 
191
        form = Formset({}).forms[0]
 
192
        self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))
 
193
 
 
194
    def test_modelformset_factory_default(self):
 
195
        Formset = modelformset_factory(UserSite, form=UserSiteForm)
 
196
        form = Formset({}).forms[0]
 
197
        self.assertTrue(isinstance(form['data'].field.widget, CustomWidget))
 
198
 
 
199
    def assertCallbackCalled(self, callback):
 
200
        id_field, user_field, data_field = UserSite._meta.fields
 
201
        expected_log = [
 
202
            (id_field, {}),
 
203
            (user_field, {}),
 
204
            (data_field, {'widget': CustomWidget}),
 
205
        ]
 
206
        self.assertEqual(callback.log, expected_log)
 
207
 
 
208
    def test_inlineformset_custom_callback(self):
 
209
        callback = Callback()
 
210
        inlineformset_factory(User, UserSite, form=UserSiteForm,
 
211
                              formfield_callback=callback)
 
212
        self.assertCallbackCalled(callback)
 
213
 
 
214
    def test_modelformset_custom_callback(self):
 
215
        callback = Callback()
 
216
        modelformset_factory(UserSite, form=UserSiteForm,
 
217
                             formfield_callback=callback)
 
218
        self.assertCallbackCalled(callback)