From 7f37b1a8b098074560cdac9f3391a98bde5c2859 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 4 Dec 2023 21:48:06 +0100 Subject: [PATCH] implement test_nextcloud_quota --- src/tests_nextcloud/tests_nextcloud.py | 43 +++++++++++++++++++------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/src/tests_nextcloud/tests_nextcloud.py b/src/tests_nextcloud/tests_nextcloud.py index c9bc5be..b79150f 100644 --- a/src/tests_nextcloud/tests_nextcloud.py +++ b/src/tests_nextcloud/tests_nextcloud.py @@ -1,13 +1,32 @@ -def test_nextcloud(nc_session): +import re + +import pytest +from playwright.sync_api import Page, expect + + +def test_nextcloud_quota(nextcloud_admin_page: Page, dotenv_config: dict[str, str]): """Test Nextcloud""" - context, page = nc_session - # if page.query_selector('.close-icon'): - # page.get_by_role("button", name="Close modal").click() - if CONFIG.get("default_quota"): - quota = int( - page.get_by_role("listitem", name="Storage informations").get_by_role("link").inner_text().split()[3] - ) - assert quota == CONFIG["default_quota"] - for app in CONFIG["nc_apps"]: - check_for(page.get_by_role("link", name=app)) - context.tracing.stop(path=f"{RECORDS}/nextcloud.zip") + if dotenv_config.get("DEFAULT_QUOTA"): + # get quota from website + quota_string = nextcloud_admin_page.get_by_text( + re.compile(r"\d*,\d .* \d*,\d") + ).inner_text() # "37,7 MB von 104,9 MB verwendet" + out = re.search(r"\d*,\d .* (\d*,\d).", quota_string) + out_number = out[1] # 104,9 + out_number = out_number.replace(",", ".") + quota_website = float(out_number) + + # get quota from env + quota_config_string = dotenv_config["DEFAULT_QUOTA"] # "100 MB" + assert "MB" in quota_config_string + quota_config = float(quota_config_string.strip("MB")) + + assert quota_website == pytest.approx(quota_config, rel=0.1) # within 10% + else: + pytest.skip("DEFAULT_QUOTA not defined in env file") + + +@pytest.mark.skip +def test_nextcloud_apps(nextcloud_admin_page: Page, dotenv_config: dict[str, str]): + for app in dotenv_config["nc_apps"]: + expect(nextcloud_admin_page.get_by_role("link", name=app)).to_be_visible()