From 27fbda5e7ba21a43c64ca0324c24f42a484196c0 Mon Sep 17 00:00:00 2001 From: Kevin Morris Date: Sat, 9 Oct 2021 22:00:18 -0700 Subject: [PATCH] feat(FastAPI): add get_(errors|successes) testing HTML helpers These functions will allow us to more easily check errors or success messages when testing routes. Signed-off-by: Kevin Morris --- aurweb/testing/html.py | 11 +++++++++++ test/test_html.py | 22 +++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/aurweb/testing/html.py b/aurweb/testing/html.py index d5f0c256..f01aaf3d 100644 --- a/aurweb/testing/html.py +++ b/aurweb/testing/html.py @@ -1,4 +1,5 @@ from io import StringIO +from typing import List from lxml import etree @@ -12,3 +13,13 @@ def parse_root(html: str) -> etree.Element: :return: etree.Element """ return etree.parse(StringIO(html), parser) + + +def get_errors(content: str) -> List[etree._Element]: + root = parse_root(content) + return root.xpath('//ul[@class="errorlist"]/li') + + +def get_successes(content: str) -> List[etree._Element]: + root = parse_root(content) + return root.xpath('//ul[@class="success"]/li') diff --git a/test/test_html.py b/test/test_html.py index 562d6a63..2018840b 100644 --- a/test/test_html.py +++ b/test/test_html.py @@ -9,7 +9,7 @@ from aurweb import asgi, db from aurweb.models.account_type import TRUSTED_USER_ID, USER_ID, AccountType from aurweb.models.user import User from aurweb.testing import setup_test_db -from aurweb.testing.html import parse_root +from aurweb.testing.html import get_errors, get_successes, parse_root from aurweb.testing.requests import Request @@ -97,3 +97,23 @@ def test_archdev_navbar_authenticated_tu(client: TestClient, items = root.xpath('//div[@id="archdev-navbar"]/ul/li/a') for i, item in enumerate(items): assert item.text.strip() == expected[i] + + +def test_get_errors(): + html = """ + +""" + errors = get_errors(html) + assert errors[0].text.strip() == "Test" + + +def test_get_successes(): + html = """ + +""" + successes = get_successes(html) + assert successes[0].text.strip() == "Test"