예제 #1
0
def test_multiple_filters():
    with flask_app.test_request_context('/'):
        response = multiple_filter_view()
        eq_(response, 'This is an error message.')
        eq_([noop_filter], filters.get_filters_before_run())


# APPLY FILTERS CORRECTLY USING VIEW DECORATOR

def another_noop_filter():
    yield
    yield None
    ok_(False)  # we shouldn't get here

_view = filters.make_view_decorator(flask_app, '/',
                                    noop_filter, another_noop_filter)

@_view('', 'GET')
def reusable_decorator_view():
    return 'This view is wrapped with a reusable view decorator.'

@_view('one_off', 'GET', filters=[response_filter])
def one_off_filter_view():
    return 'This view adds a one-off filter to a reusable decorator.'

def test_reusable_decorator():
    with flask_app.test_request_context('/'):
        response = reusable_decorator_view()
        eq_(response, 'This view is wrapped with a reusable view decorator.')
        eq_([noop_filter, another_noop_filter],
            filters.get_filters_before_run())
예제 #2
0
def json_filter():
    """
    Filter that wraps a Flask view that returns a Python dict and serializes
    that dict as JSON.

    Refuses to run after hello_world_filter.
    """
    if hasattr(g, 'message') and g.message:
        yield abort(418)
    data = yield
    yield jsonify(data)


# Create a decorator that registers view functions against flask_app in the
# root URL namespace, and also wraps each view with hello_world_filter
_view = make_view_decorator(flask_app, '/', hello_world_filter)


@_view('', 'GET')
def hello_world():
    """
    Displays a simple HTML "Hello, world!"

    Order of execution:
    1. The hello_world_filter sets g.message to "Hello, world!", then yields.
    2. This view runs, returning a dict.
    3. The hello_world_filter resumes (and does nothing).
    """
    html_links = '''<p><a href="/json">JSON</a></p>
                    <p><a href="/error">error</a></p>'''
    return g.message + html_links
예제 #3
0
    with flask_app.test_request_context('/'):
        response = multiple_filter_view()
        eq_(response, 'This is an error message.')
        eq_([noop_filter], filters.get_filters_before_run())


# APPLY FILTERS CORRECTLY USING VIEW DECORATOR


def another_noop_filter():
    yield
    yield None
    ok_(False)  # we shouldn't get here


_view = filters.make_view_decorator(flask_app, '/', noop_filter,
                                    another_noop_filter)


@_view('', 'GET')
def reusable_decorator_view():
    return 'This view is wrapped with a reusable view decorator.'


@_view('one_off', 'GET', filters=[response_filter])
def one_off_filter_view():
    return 'This view adds a one-off filter to a reusable decorator.'


def test_reusable_decorator():
    with flask_app.test_request_context('/'):
        response = reusable_decorator_view()