aboutsummaryrefslogtreecommitdiff
path: root/test/unit/test_dialog.py
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-01-10 23:38:56 +0100
committerWojtek Kosior <koszko@koszko.org>2022-01-10 23:38:56 +0100
commit19304cd1ae4e4ba4f6dcf4f1db14de1e4e70c250 (patch)
tree2e7e6f904ad16f9402827a7bc215a419de5c2656 /test/unit/test_dialog.py
parent38650a8102fe0841617cd80f3a6e45b1f5f62fd5 (diff)
downloadbrowser-extension-19304cd1ae4e4ba4f6dcf4f1db14de1e4e70c250.tar.gz
browser-extension-19304cd1ae4e4ba4f6dcf4f1db14de1e4e70c250.zip
improve item list styling; add payload creation form; exend dialog mechanism
Diffstat (limited to 'test/unit/test_dialog.py')
-rw-r--r--test/unit/test_dialog.py45
1 files changed, 29 insertions, 16 deletions
diff --git a/test/unit/test_dialog.py b/test/unit/test_dialog.py
index 384a889..63af79e 100644
--- a/test/unit/test_dialog.py
+++ b/test/unit/test_dialog.py
@@ -29,31 +29,35 @@ from ..script_loader import load_script
@pytest.mark.usefixtures('webextension')
def test_dialog_show_close(driver, execute_in_page):
"""
- A test case of basing dialog showing/closing.
+ A test case of basic dialog showing/closing.
"""
execute_in_page(load_script('html/dialog.js'))
- execute_in_page(
+ buts = execute_in_page(
'''
let cb_calls, call_prom;
const dialog_context = make(() => cb_calls.push("show"),
() => cb_calls.push("hide"));
document.body.append(dialog_context.main_div);
+ const buts = {};
+ for (const but of document.getElementsByTagName("button"))
+ buts[but.textContent] = but;
+ returnval(buts);
''')
- buts = driver.find_elements_by_tag_name('button')
- buts = dict([(but.text, but) for but in buts])
-
- for i, (dialog_function, button_text, expected_result) in enumerate([
- ('info', 'Ok', None),
- ('error', 'Ok', None),
- ('ask', 'Yes', True),
- ('ask', 'No', False)
+ for i, (dialog_function, but_text, hidden, expected_result) in enumerate([
+ ('info', 'Ok', ['Yes', 'No'], None),
+ ('error', 'Ok', ['Yes', 'No'], None),
+ ('error', None, ['Yes', 'No'], None),
+ ('loader', None, ['Yes', 'No', 'Ok'], None),
+ ('ask', 'Yes', ['Ok'], True),
+ ('ask', None, ['Ok'], None),
+ ('ask', 'No', ['Ok'], False)
]):
cb_calls, is_shown = execute_in_page(
f'''
cb_calls = [];
call_prom = {dialog_function}(dialog_context,
- `sample_text_${{arguments[0]}}`);
+ `sample_text_${{arguments[0]}}`);
returnval([cb_calls, dialog_context.shown]);
''',
i)
@@ -64,14 +68,23 @@ def test_dialog_show_close(driver, execute_in_page):
assert f'sample_text_{i}' in page_source
assert f'sample_text_{i - 1}' not in page_source
- assert any([not but.is_displayed() for but in buts.values()])
-
- assert buts[button_text].is_displayed()
- buts[button_text].click()
+ # Verify the right buttons are displayed.
+ for text, but in buts.items():
+ if text in hidden:
+ assert not but.is_displayed()
+ # Verify clicking a hidden button does nothing.
+ execute_in_page('buts[arguments[0]].click();', text)
+ assert execute_in_page('returnval(cb_calls);') == cb_calls
+ else:
+ assert but.is_displayed()
+
+ if but_text is None:
+ execute_in_page('close_dialog(dialog_context);')
+ else:
+ buts[but_text].click()
cb_calls, result, is_shown = execute_in_page(
'''{
- console.error(dialog_context.msg.textContent);
const values_cb = r => [cb_calls, r, dialog_context.shown];
returnval(call_prom.then(values_cb));
}''')