Example #1
0
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, {})
Example #2
0
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'})
Example #3
0
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')
Example #4
0
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')