def test_dict_to_predicate_key_for_unknown_dispatch(): @dispatch() def foo(): pass r = Registry() with pytest.raises(KeyError): r.key_dict_to_predicate_key(foo, {})
def test_key_dict_to_predicate_key_unknown_keys(): r = Registry() @dispatch( key_predicate('foo', default='default foo'), key_predicate('bar', default='default bar')) def view(self, request): raise NotImplementedError() r.register_dispatch(view) # unknown keys are just ignored r.key_dict_to_predicate_key(view.wrapped_func, { 'unknown': 'blah'})
def test_key_dict_to_predicate_key(): r = Registry() @dispatch( key_predicate('foo', default='default foo'), key_predicate('bar', default='default bar')) def view(self, request): raise NotImplementedError() r.register_dispatch(view) assert r.key_dict_to_predicate_key(view.wrapped_func, { 'foo': 'FOO', 'bar': 'BAR'}) == ('FOO', 'BAR') assert r.key_dict_to_predicate_key(view.wrapped_func, {}) == ( 'default foo', 'default bar')
def test_register_dispatch_key_dict(): r = Registry() class Foo(object): pass class FooSub(Foo): pass @dispatch_external_predicates() def view(self, request): raise NotImplementedError() def get_model(self): return self def get_name(request): return request.name def get_request_method(request): return request.request_method def model_fallback(self, request): return "Model fallback" def name_fallback(self, request): return "Name fallback" def request_method_fallback(self, request): return "Request method fallback" r.register_external_predicates(view, [ match_instance('model', get_model, model_fallback, default=None), match_key('name', get_name, name_fallback, default=''), match_key('request_method', get_request_method, request_method_fallback, default='GET')]) r.register_dispatch(view) assert r.key_dict_to_predicate_key( view.wrapped_func, {}) == (None, '', 'GET')