diff options
author | wim glenn <git@wimglenn.com> | 2016-06-03 15:50:38 -0700 |
---|---|---|
committer | Tim Graham <timograham@gmail.com> | 2016-06-06 08:54:25 -0400 |
commit | 5ebebd1159b4bacfce1999e41831081679b6f35a (patch) | |
tree | f1f650aa337968ac5893b87bc6049f29273ddec6 /tests/httpwrappers | |
parent | da22079c21a02c65e31502dd05720d12c474b257 (diff) | |
download | django-5ebebd1159b4bacfce1999e41831081679b6f35a.tar.gz |
Fixed #26707 -- Added QueryDict.fromkeys()
Diffstat (limited to 'tests/httpwrappers')
-rw-r--r-- | tests/httpwrappers/tests.py | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/tests/httpwrappers/tests.py b/tests/httpwrappers/tests.py index 59ff3f4a70..2329a02531 100644 --- a/tests/httpwrappers/tests.py +++ b/tests/httpwrappers/tests.py @@ -25,7 +25,7 @@ from django.utils.encoding import force_str from django.utils.functional import lazystr -class QueryDictTests(unittest.TestCase): +class QueryDictTests(SimpleTestCase): def test_create_with_no_args(self): self.assertEqual(QueryDict(), QueryDict(str(''))) @@ -271,6 +271,44 @@ class QueryDictTests(unittest.TestCase): self.assertEqual(copy.copy(q).encoding, 'iso-8859-15') self.assertEqual(copy.deepcopy(q).encoding, 'iso-8859-15') + def test_querydict_fromkeys(self): + self.assertEqual(QueryDict.fromkeys(['key1', 'key2', 'key3']), QueryDict('key1&key2&key3')) + + def test_fromkeys_with_nonempty_value(self): + self.assertEqual( + QueryDict.fromkeys(['key1', 'key2', 'key3'], value='val'), + QueryDict('key1=val&key2=val&key3=val') + ) + + def test_fromkeys_is_immutable_by_default(self): + # Match behavior of __init__() which is also immutable by default. + q = QueryDict.fromkeys(['key1', 'key2', 'key3']) + with self.assertRaisesMessage(AttributeError, 'This QueryDict instance is immutable'): + q['key4'] = 'nope' + + def test_fromkeys_mutable_override(self): + q = QueryDict.fromkeys(['key1', 'key2', 'key3'], mutable=True) + q['key4'] = 'yep' + self.assertEqual(q, QueryDict('key1&key2&key3&key4=yep')) + + def test_duplicates_in_fromkeys_iterable(self): + self.assertEqual(QueryDict.fromkeys('xyzzy'), QueryDict('x&y&z&z&y')) + + def test_fromkeys_with_nondefault_encoding(self): + key_utf16 = b'\xff\xfe\x8e\x02\xdd\x01\x9e\x02' + value_utf16 = b'\xff\xfe\xdd\x01n\x00l\x00P\x02\x8c\x02' + q = QueryDict.fromkeys([key_utf16], value=value_utf16, encoding='utf-16') + expected = QueryDict('', mutable=True) + expected['ʎǝʞ'] = 'ǝnlɐʌ' + self.assertEqual(q, expected) + + def test_fromkeys_empty_iterable(self): + self.assertEqual(QueryDict.fromkeys([]), QueryDict('')) + + def test_fromkeys_noniterable(self): + with self.assertRaises(TypeError): + QueryDict.fromkeys(0) + class HttpResponseTests(unittest.TestCase): |