Django

Code

root/django/branches/newforms-admin/django/contrib/formtools/tests.py

Revision 7809, 3.0 kB (checked in by brosner, 5 months ago)

newforms-admin: Merged from trunk up to [7808]. Fixed #7519, #7573

  • Property svn:eol-style set to native
Line 
1 from django import newforms as forms
2 from django.contrib.formtools import preview
3 from django import http
4 from django.conf import settings
5 from django.test import TestCase
6
7 success_string = "Done was called!"
8 test_data = {'field1': u'foo',
9              'field1_': u'asdf'}
10
11
12 class TestFormPreview(preview.FormPreview):
13
14     def done(self, request, cleaned_data):
15         return http.HttpResponse(success_string)
16
17
18 class TestForm(forms.Form):
19     field1 = forms.CharField()
20     field1_ = forms.CharField()
21
22
23 class PreviewTests(TestCase):
24     urls = 'django.contrib.formtools.test_urls'
25
26     def setUp(self):
27         # Create a FormPreview instance to share between tests
28         self.preview = preview.FormPreview(TestForm)
29         input_template = '<input type="hidden" name="%s" value="%s" />'
30         self.input = input_template % (self.preview.unused_name('stage'), "%d")
31
32     def test_unused_name(self):
33         """
34         Verifies name mangling to get uniue field name.
35         """
36         self.assertEqual(self.preview.unused_name('field1'), 'field1__')
37
38     def test_form_get(self):
39         """
40         Test contrib.formtools.preview form retrieval.
41
42         Use the client library to see if we can sucessfully retrieve
43         the form (mostly testing the setup ROOT_URLCONF
44         process). Verify that an additional  hidden input field
45         is created to manage the stage.
46
47         """
48         response = self.client.get('/test1/')
49         stage = self.input % 1
50         self.assertContains(response, stage, 1)
51
52     def test_form_preview(self):
53         """
54         Test contrib.formtools.preview form preview rendering.
55
56         Use the client library to POST to the form to see if a preview
57         is returned.  If we do get a form back check that the hidden
58         value is correctly managing the state of the form.
59
60         """
61         # Pass strings for form submittal and add stage variable to
62         # show we previously saw first stage of the form.
63         test_data.update({'stage': 1})
64         response = self.client.post('/test1/', test_data)
65         # Check to confirm stage is set to 2 in output form.
66         stage = self.input % 2
67         self.assertContains(response, stage, 1)
68
69     def test_form_submit(self):
70         """
71         Test contrib.formtools.preview form submittal.
72
73         Use the client library to POST to the form with stage set to 3
74         to see if our forms done() method is called. Check first
75         without the security hash, verify failure, retry with security
76         hash and verify sucess.
77
78         """
79         # Pass strings for form submittal and add stage variable to
80         # show we previously saw first stage of the form.
81         test_data.update({'stage': 2})
82         response = self.client.post('/test1/', test_data)
83         self.failIfEqual(response.content, success_string)
84         hash = self.preview.security_hash(None, TestForm(test_data))
85         test_data.update({'hash': hash})
86         response = self.client.post('/test1/', test_data)
87         self.assertEqual(response.content, success_string)
Note: See TracBrowser for help on using the browser.