def dispatch(**kwargs): if "default" in kwargs: default = kwargs["default"].lower() if hasattr( kwargs["default"], "lower") else kwargs["default"] del kwargs["default"] else: default = "get" verbs = CaseInsensitiveDict() verbs.update(kwargs) def dispatch_request(request, *args, **kwargs): if request.method.lower() not in verbs: if default in verbs: view = verbs[default] else: # sorted is for determinist ordering for testing purpose return HttpResponseNotAllowed( sorted(map(lambda x: x.upper(), verbs.keys()))) else: view = verbs[request.method.lower()] return view(request, *args, **kwargs) return dispatch_request
class CaseInsensitiveTestCase(unittest.TestCase): def setUp(self): self.d = CaseInsensitiveDict(foo='bar') def test_keyfunc_passthrough(self): self.d[42] = 'bar' self.assertEqual(self.d[42], 'bar') def test_getitem(self): self.assertEqual(self.d['FOO'], 'bar') def test_setitem(self): self.d['BAR'] = 'baz' self.assertEqual(self.d['bar'], 'baz') def test_delitem(self): del self.d['FOO'] with self.assertRaises(KeyError): self.d['foo'] def test_update_new_key(self): self.d.update({'bar': 'baz', 'BAZ': 'quux'}) self.assertEqual(self.d['bar'], 'baz') self.assertEqual(self.d['baz'], 'quux') def test_update_overwrite(self): self.d.update({'FOO': 'baz'}) self.assertEqual(self.d['foo'], 'baz') def test_setdefault(self): self.d.setdefault('FOO', 'baz') self.assertEqual(self.d['foo'], 'bar') def test_fromkeys(self): d = CaseInsensitiveDict.fromkeys(['foo'], 'bar') self.assertEqual(d['FOO'], 'bar')
def test_fromkeys(self): d = CaseInsensitiveDict.fromkeys(['foo'], 'bar') self.assertEqual(d['FOO'], 'bar')
def setUp(self): self.d = CaseInsensitiveDict(foo='bar')