From 5185df629ee7d2190fac7f0268935e3f4477d114 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Thu, 24 Dec 2020 20:48:35 -0800 Subject: [PATCH] move aurweb.testing to its own package + Added aurweb.testing.setup_test_db(*tables) + Added aurweb.testing.models.make_user(**kwargs) + Added aurweb.testing.models.make_session(**kwargs) + Added aurweb.testing.requests.Client + Added aurweb.testing.requests.Request * Updated test_l10n.py to use our new Request Signed-off-by: Kevin Morris --- aurweb/{testing.py => testing/__init__.py} | 4 ++-- aurweb/testing/models.py | 25 ++++++++++++++++++++++ aurweb/testing/requests.py | 8 +++++++ test/test_l10n.py | 18 ++++++---------- 4 files changed, 41 insertions(+), 14 deletions(-) rename aurweb/{testing.py => testing/__init__.py} (93%) create mode 100644 aurweb/testing/models.py create mode 100644 aurweb/testing/requests.py diff --git a/aurweb/testing.py b/aurweb/testing/__init__.py similarity index 93% rename from aurweb/testing.py rename to aurweb/testing/__init__.py index 7516d918..0a807b40 100644 --- a/aurweb/testing.py +++ b/aurweb/testing/__init__.py @@ -1,4 +1,4 @@ -from aurweb.db import get_engine +import aurweb.db def setup_test_db(*args): @@ -21,7 +21,7 @@ def setup_test_db(*args): test_tables = ["Users", "Sessions"]; setup_test_db(*test_tables) """ - engine = get_engine() + engine = aurweb.db.get_engine() conn = engine.connect() tables = list(args) diff --git a/aurweb/testing/models.py b/aurweb/testing/models.py new file mode 100644 index 00000000..8a27c409 --- /dev/null +++ b/aurweb/testing/models.py @@ -0,0 +1,25 @@ +import warnings + +from sqlalchemy import exc + +import aurweb.db + + +def make_user(**kwargs): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", exc.SAWarning) + from aurweb.models.user import User + user = User(**kwargs) + aurweb.db.session.add(user) + aurweb.db.session.commit() + return user + + +def make_session(**kwargs): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", exc.SAWarning) + from aurweb.models.session import Session + session = Session(**kwargs) + aurweb.db.session.add(session) + aurweb.db.session.commit() + return session diff --git a/aurweb/testing/requests.py b/aurweb/testing/requests.py new file mode 100644 index 00000000..2839c93f --- /dev/null +++ b/aurweb/testing/requests.py @@ -0,0 +1,8 @@ +class Client: + host = "127.0.0.1" + + +class Request: + client = Client() + cookies = dict() + headers = dict() diff --git a/test/test_l10n.py b/test/test_l10n.py index 1a1ef3e6..e833cd44 100644 --- a/test/test_l10n.py +++ b/test/test_l10n.py @@ -1,13 +1,6 @@ """ Test our l10n module. """ from aurweb import l10n - - -class FakeRequest: - """ A fake Request doppleganger; use this to change request.cookies - easily and with no side-effects. """ - - def __init__(self, *args, **kwargs): - self.cookies = kwargs.pop("cookies", dict()) +from aurweb.testing.requests import Request def test_translator(): @@ -18,7 +11,7 @@ def test_translator(): def test_get_request_language(): """ First, tests default_lang, then tests a modified AURLANG cookie. """ - request = FakeRequest() + request = Request() assert l10n.get_request_language(request) == "en" request.cookies["AURLANG"] = "de" @@ -28,8 +21,8 @@ def test_get_request_language(): def test_get_raw_translator_for_request(): """ Make sure that get_raw_translator_for_request is giving us the translator we expect. """ - request = FakeRequest(cookies={"AURLANG": "de"}) - + request = Request() + request.cookies["AURLANG"] = "de" translator = l10n.get_raw_translator_for_request(request) assert translator.gettext("Home") == \ l10n.translator.translate("Home", "de") @@ -38,7 +31,8 @@ def test_get_raw_translator_for_request(): def test_get_translator_for_request(): """ Make sure that get_translator_for_request is giving us back our expected translation function. """ - request = FakeRequest(cookies={"AURLANG": "de"}) + request = Request() + request.cookies["AURLANG"] = "de" translate = l10n.get_translator_for_request(request) assert translate("Home") == "Startseite"