diff options
author | Wojtek Kosior <koszko@koszko.org> | 2022-01-10 23:38:56 +0100 |
---|---|---|
committer | Wojtek Kosior <koszko@koszko.org> | 2022-01-10 23:38:56 +0100 |
commit | 19304cd1ae4e4ba4f6dcf4f1db14de1e4e70c250 (patch) | |
tree | 2e7e6f904ad16f9402827a7bc215a419de5c2656 /test/unit/test_dialog.py | |
parent | 38650a8102fe0841617cd80f3a6e45b1f5f62fd5 (diff) | |
download | browser-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.py | 45 |
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)); }''') |