1
from __future__ import unicode_literals
1
3
from django import forms, http
2
4
from django.conf import settings
5
from django.db import models
3
6
from django.test import TestCase
4
7
from django.template.response import TemplateResponse
5
8
from django.utils.importlib import import_module
27
30
request.session = engine.SessionStore(None)
30
34
class Step1(forms.Form):
31
35
name = forms.CharField()
33
38
class Step2(forms.Form):
34
39
name = forms.CharField()
36
42
class Step3(forms.Form):
37
43
data = forms.CharField()
39
46
class CustomKwargsStep1(Step1):
41
48
def __init__(self, test=None, *args, **kwargs):
43
50
return super(CustomKwargsStep1, self).__init__(*args, **kwargs)
45
class UserForm(forms.ModelForm):
49
UserFormSet = forms.models.modelformset_factory(User, form=UserForm, extra=2)
53
class TestModel(models.Model):
54
name = models.CharField(max_length=100)
57
app_label = 'formtools'
60
class TestModelForm(forms.ModelForm):
65
TestModelFormSet = forms.models.modelformset_factory(TestModel, form=TestModelForm, extra=2)
51
68
class TestWizard(WizardView):
52
69
storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
64
81
class FormTests(TestCase):
65
82
def test_form_init(self):
66
83
testform = TestWizard.get_initkwargs([Step1, Step2])
67
self.assertEqual(testform['form_list'], {u'0': Step1, u'1': Step2})
84
self.assertEqual(testform['form_list'], {'0': Step1, '1': Step2})
69
86
testform = TestWizard.get_initkwargs([('start', Step1), ('step2', Step2)])
71
testform['form_list'], {u'start': Step1, u'step2': Step2})
88
testform['form_list'], {'start': Step1, 'step2': Step2})
73
90
testform = TestWizard.get_initkwargs([Step1, Step2, ('finish', Step3)])
75
testform['form_list'], {u'0': Step1, u'1': Step2, u'finish': Step3})
92
testform['form_list'], {'0': Step1, '1': Step2, 'finish': Step3})
77
94
def test_first_step(self):
78
95
request = get_request()
80
97
testform = TestWizard.as_view([Step1, Step2])
81
98
response, instance = testform(request)
82
self.assertEqual(instance.steps.current, u'0')
99
self.assertEqual(instance.steps.current, '0')
84
101
testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
85
102
response, instance = testform(request)
148
165
def test_form_instance(self):
149
166
request = get_request()
150
the_instance = User()
151
testform = TestWizard.as_view([('start', UserForm), ('step2', Step2)],
167
the_instance = TestModel()
168
testform = TestWizard.as_view([('start', TestModelForm), ('step2', Step2)],
152
169
instance_dict={'start': the_instance})
153
170
response, instance = testform(request)
162
179
def test_formset_instance(self):
163
180
request = get_request()
164
the_instance1, created = User.objects.get_or_create(
165
username='testuser1')
166
the_instance2, created = User.objects.get_or_create(
167
username='testuser2')
168
testform = TestWizard.as_view([('start', UserFormSet), ('step2', Step2)],
169
instance_dict={'start': User.objects.filter(username='testuser1')})
181
the_instance1, created = TestModel.objects.get_or_create(
182
name='test object 1')
183
the_instance2, created = TestModel.objects.get_or_create(
184
name='test object 2')
185
testform = TestWizard.as_view([('start', TestModelFormSet), ('step2', Step2)],
186
instance_dict={'start': TestModel.objects.filter(name='test object 1')})
170
187
response, instance = testform(request)
172
189
self.assertEqual(list(instance.get_form_instance('start')), [the_instance1])