From 7237391b4ad8eb7c8801f034fca3b9ae29c9cc32 Mon Sep 17 00:00:00 2001 From: Stefane Fermigier Date: Mon, 9 Jul 2018 17:03:06 +0200 Subject: [PATCH] fixes. --- abilian/services/vocabularies/tests.py | 12 ++++++------ abilian/testing/util.py | 5 +++++ abilian/testing/validation.py | 7 ++++++- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/abilian/services/vocabularies/tests.py b/abilian/services/vocabularies/tests.py index 7d21c103..18fe46ab 100644 --- a/abilian/services/vocabularies/tests.py +++ b/abilian/services/vocabularies/tests.py @@ -5,9 +5,9 @@ import sqlalchemy as sa import sqlalchemy.exc -from hyperlink import URL from pytest import mark, raises +from abilian.testing.util import path_from_url from abilian.web import url_for from .models import BaseVocabulary, Vocabulary @@ -137,14 +137,14 @@ def test_admin_panel_reorder(app, db, session, client, test_request_context): data.update(base_data) r = client.post(url, data=data) assert r.status_code == 302 - assert URL.from_text(r.headers["Location"]).path == "/admin/vocabularies" + assert path_from_url(r.headers["Location"]) == "/admin/vocabularies" assert Voc.query.order_by(Voc.position).all() == [second, first, third] data = {"up": first.id, "return_to": "group"} data.update(base_data) r = client.post(url, data=data) assert r.status_code == 302 - assert URL.from_text(r.headers["Location"]).path == "/admin/vocabularies/_/" + assert path_from_url(r.headers["Location"]) == "/admin/vocabularies/_/" assert Voc.query.order_by(Voc.position).all() == [first, second, third] data = {"up": first.id, "return_to": "model"} @@ -152,7 +152,7 @@ def test_admin_panel_reorder(app, db, session, client, test_request_context): r = client.post(url, data=data) assert r.status_code == 302 assert ( - URL.from_text(r.headers["Location"]).path + path_from_url(r.headers["Location"]) == "/admin/vocabularies/_/defaultstates/" ) assert Voc.query.order_by(Voc.position).all() == [first, second, third] @@ -161,12 +161,12 @@ def test_admin_panel_reorder(app, db, session, client, test_request_context): data.update(base_data) r = client.post(url, data=data) assert r.status_code == 302 - assert URL.from_text(r.headers["Location"]).path == "/admin/vocabularies" + assert path_from_url(r.headers["Location"]) == "/admin/vocabularies" assert Voc.query.order_by(Voc.position).all() == [first, second, third] data = {"up": third.id} data.update(base_data) r = client.post(url, data=data) assert r.status_code == 302 - assert URL.from_text(r.headers["Location"]).path == "/admin/vocabularies" + assert path_from_url(r.headers["Location"]) == "/admin/vocabularies" assert Voc.query.order_by(Voc.position).all() == [first, third, second] diff --git a/abilian/testing/util.py b/abilian/testing/util.py index 2f636c35..24abf88e 100644 --- a/abilian/testing/util.py +++ b/abilian/testing/util.py @@ -5,6 +5,7 @@ from flask.testing import FlaskClient from flask_login import login_user, logout_user +from hyperlink import URL from sqlalchemy.exc import DatabaseError from abilian.core.models.subjects import User @@ -19,6 +20,10 @@ ) +def path_from_url(url): + return "/" + "/".join(URL.from_text(url).path) + + def client_login(client, user): # type: (FlaskClient, User) -> LoginContext diff --git a/abilian/testing/validation.py b/abilian/testing/validation.py index abfaae19..84cb29ca 100644 --- a/abilian/testing/validation.py +++ b/abilian/testing/validation.py @@ -12,7 +12,7 @@ SKIPPED_PATHS = [ # FIXME: later - "/admin/settings" + ("admin", "settings"), ] @@ -21,6 +21,7 @@ class ValidationError(AssertionError): def validate_response(response): + # type: (Response) -> Response assert_valid(response) return response @@ -53,11 +54,13 @@ def assert_valid(response): def assert_html_valid(response): + # type: (Response) -> None assert_html_valid_using_htmlhint(response) assert_html_valid_using_external_service(response) def assert_html_valid_using_htmlhint(response): + # type: (Response) -> None with NamedTemporaryFile() as tmpfile: tmpfile.write(response.data) tmpfile.flush() @@ -71,6 +74,7 @@ def assert_html_valid_using_htmlhint(response): def assert_html_valid_using_external_service(response): + # type: (Response) -> None config = current_app.config validator_url = config.get("VALIDATOR_URL") or os.environ.get("VALIDATOR_URL") @@ -95,6 +99,7 @@ def assert_html_valid_using_external_service(response): def assert_json_valid(response): + # type: (Response) -> None try: json.loads(response.data) except BaseException: