diff options
Diffstat (limited to 'packages/meshbay-hub/tests/test_app_settings_plugin.py')
| -rw-r--r-- | packages/meshbay-hub/tests/test_app_settings_plugin.py | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/packages/meshbay-hub/tests/test_app_settings_plugin.py b/packages/meshbay-hub/tests/test_app_settings_plugin.py index 1837c28..6a768a9 100644 --- a/packages/meshbay-hub/tests/test_app_settings_plugin.py +++ b/packages/meshbay-hub/tests/test_app_settings_plugin.py @@ -278,3 +278,45 @@ def test_the_search_cache_reads_both_shapes(): fn = _component(source, "cachedDirs") assert "legacyKey" in fn assert "videoRoot" in source and "audioRoot" in source and "photoRoots" in source + + +# ── Where a result is reported ────────────────────────────────────────────── + +def test_the_directory_result_is_reported_below_the_controls(): + """ + It was rendered first, between the section's intro and the table header — + above everything the eye had already moved past by the time it appeared. + It belongs under the button that caused it, which is the last thing in the + section. + """ + table = _component(GROUP_SETTINGS.read_text(encoding="utf-8"), + "SharedDirectoriesTable") + # Two of them: the early return for a group with no directories yet, and + # the real one. Both report, and both must report last — keyed on the + # wrapper rather than on `return`, of which there are more. + blocks = table.split('<div class="shared-directories-table">')[1:] + assert len(blocks) == 2, "the section's shape changed; this test is stale" + + for block in blocks: + assert block.index("${addControls}") < block.index("${message}"), ( + "the result is rendered above the Add button rather than below it") + + with_table = next(b for b in blocks if "<table" in b) + assert with_table.index("<table") < with_table.index("${message}"), ( + "the result is rendered above the table") + + +def test_a_refusal_does_not_look_like_a_footnote(): + """ + Every message here was a `settings-hint` — dim grey body text — so "two + roots would both be called uploads" read as an aside about the section + rather than as the reason nothing happened. + """ + table = _component(GROUP_SETTINGS.read_text(encoding="utf-8"), + "SharedDirectoriesTable") + block = table[table.index("const message ="):] + block = block[:block.index("`;") + 2] + assert "error-msg" in block + assert "role=" in block and "alert" in block, ( + "a refusal that appears after a click has to be announced, not just " + "drawn") |