Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fixed #4402 -- Modified test client to allow multi-valued inputs on G…

…ET requests. Thanks for the suggestion, eddymul@gmail.com.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@5741 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f2303b6f7aa744f8edf4ecf28b7c88db222386f8 1 parent 6a4f164
@freakboy3742 freakboy3742 authored
View
2  django/test/client.py
@@ -195,7 +195,7 @@ def get(self, path, data={}, **extra):
'CONTENT_LENGTH': None,
'CONTENT_TYPE': 'text/html; charset=utf-8',
'PATH_INFO': path,
- 'QUERY_STRING': urlencode(data),
+ 'QUERY_STRING': urlencode(data, doseq=True),
'REQUEST_METHOD': 'GET',
}
r.update(extra)
View
7 django/utils/http.py
@@ -30,6 +30,9 @@ def urlencode(query, doseq=0):
"""
if hasattr(query, 'items'):
query = query.items()
- return urllib.urlencode([(smart_str(k), smart_str(v)) for k,
- v in query], doseq)
+ return urllib.urlencode(
+ [(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)
View
12 tests/modeltests/test_client/models.py
@@ -122,6 +122,18 @@ def test_valid_form(self):
self.assertEqual(response.status_code, 200)
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):
"POST incomplete data to a form"
post_data = {
View
3  tests/modeltests/test_client/views.py
@@ -84,7 +84,7 @@ def form_view(request):
t = Template('Invalid POST data. {{ form.errors }}', name='Invalid POST Template')
c = Context({'form': form})
else:
- form = TestForm()
+ form = TestForm(request.GET)
t = Template('Viewing base form. {{ form }}.', name='Form GET Template')
c = Context({'form': form})
@@ -107,7 +107,6 @@ def form_view_with_template(request):
'message': message
}
)
-
def login_protected_view(request):
"A simple view that is login protected."
Please sign in to comment.
Something went wrong with that request. Please try again.