Fixed #4402 -- Modified test client to allow multi-valued inputs on GET requests. Thanks for the suggestion, eddymul@gmail.com.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@5741 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
6a4f164a6f
commit
f2303b6f7a
|
@ -195,7 +195,7 @@ class Client:
|
||||||
'CONTENT_LENGTH': None,
|
'CONTENT_LENGTH': None,
|
||||||
'CONTENT_TYPE': 'text/html; charset=utf-8',
|
'CONTENT_TYPE': 'text/html; charset=utf-8',
|
||||||
'PATH_INFO': path,
|
'PATH_INFO': path,
|
||||||
'QUERY_STRING': urlencode(data),
|
'QUERY_STRING': urlencode(data, doseq=True),
|
||||||
'REQUEST_METHOD': 'GET',
|
'REQUEST_METHOD': 'GET',
|
||||||
}
|
}
|
||||||
r.update(extra)
|
r.update(extra)
|
||||||
|
|
|
@ -30,6 +30,9 @@ def urlencode(query, doseq=0):
|
||||||
"""
|
"""
|
||||||
if hasattr(query, 'items'):
|
if hasattr(query, 'items'):
|
||||||
query = query.items()
|
query = query.items()
|
||||||
return urllib.urlencode([(smart_str(k), smart_str(v)) for k,
|
return urllib.urlencode(
|
||||||
v in query], doseq)
|
[(smart_str(k),
|
||||||
|
isinstance(v, (list,tuple)) and [smart_str(i) for i in v] or smart_str(v))
|
||||||
|
for k, v in query],
|
||||||
|
doseq)
|
||||||
|
|
||||||
|
|
|
@ -122,6 +122,18 @@ class ClientTest(TestCase):
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertTemplateUsed(response, "Valid POST Template")
|
self.assertTemplateUsed(response, "Valid POST Template")
|
||||||
|
|
||||||
|
def test_valid_form_with_hints(self):
|
||||||
|
"GET a form, providing hints in the GET data"
|
||||||
|
hints = {
|
||||||
|
'text': 'Hello World',
|
||||||
|
'multi': ('b','c','e')
|
||||||
|
}
|
||||||
|
response = self.client.get('/test_client/form_view/', data=hints)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertTemplateUsed(response, "Form GET Template")
|
||||||
|
# Check that the multi-value data has been rolled out ok
|
||||||
|
self.assertContains(response, 'Select a valid choice.', 0)
|
||||||
|
|
||||||
def test_incomplete_data_form(self):
|
def test_incomplete_data_form(self):
|
||||||
"POST incomplete data to a form"
|
"POST incomplete data to a form"
|
||||||
post_data = {
|
post_data = {
|
||||||
|
|
|
@ -84,7 +84,7 @@ def form_view(request):
|
||||||
t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template')
|
t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template')
|
||||||
c = Context({'form': form})
|
c = Context({'form': form})
|
||||||
else:
|
else:
|
||||||
form = TestForm()
|
form = TestForm(request.GET)
|
||||||
t = Template('Viewing base form. {{ form }}.', name='Form GET Template')
|
t = Template('Viewing base form. {{ form }}.', name='Form GET Template')
|
||||||
c = Context({'form': form})
|
c = Context({'form': form})
|
||||||
|
|
||||||
|
@ -108,7 +108,6 @@ def form_view_with_template(request):
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def login_protected_view(request):
|
def login_protected_view(request):
|
||||||
"A simple view that is login protected."
|
"A simple view that is login protected."
|
||||||
t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')
|
t = Template('This is a login protected test. Username is {{ user.username }}.', name='Login Template')
|
||||||
|
|
Loading…
Reference in New Issue