| 1607 | |
| 1608 | |
| 1609 | def test_url_processors(app, client): |
| 1610 | @app.url_defaults |
| 1611 | def add_language_code(endpoint, values): |
| 1612 | if flask.g.lang_code is not None and app.url_map.is_endpoint_expecting( |
| 1613 | endpoint, "lang_code" |
| 1614 | ): |
| 1615 | values.setdefault("lang_code", flask.g.lang_code) |
| 1616 | |
| 1617 | @app.url_value_preprocessor |
| 1618 | def pull_lang_code(endpoint, values): |
| 1619 | flask.g.lang_code = values.pop("lang_code", None) |
| 1620 | |
| 1621 | @app.route("/<lang_code>/") |
| 1622 | def index(): |
| 1623 | return flask.url_for("about") |
| 1624 | |
| 1625 | @app.route("/<lang_code>/about") |
| 1626 | def about(): |
| 1627 | return flask.url_for("something_else") |
| 1628 | |
| 1629 | @app.route("/foo") |
| 1630 | def something_else(): |
| 1631 | return flask.url_for("about", lang_code="en") |
| 1632 | |
| 1633 | assert client.get("/de/").data == b"/de/about" |
| 1634 | assert client.get("/de/about").data == b"/foo" |
| 1635 | assert client.get("/foo").data == b"/en/about" |
| 1636 | |
| 1637 | |
| 1638 | def test_inject_blueprint_url_defaults(app): |