summaryrefslogtreecommitdiff
path: root/test/unit/test_dialog.py
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-02-16 22:01:38 +0100
committerWojtek Kosior <koszko@koszko.org>2022-02-16 22:01:38 +0100
commitfd9f2fc4783cc606734e61116185c032a63d54a0 (patch)
treeddc162b1df608c3ae51d74f19fbffc92e5cfc3e3 /test/unit/test_dialog.py
parent7965f1b455144220c137bcb25c4967283a6b7ff3 (diff)
downloadbrowser-extension-fd9f2fc4783cc606734e61116185c032a63d54a0.tar.gz
browser-extension-fd9f2fc4783cc606734e61116185c032a63d54a0.zip
fix out-of-source builds
Diffstat (limited to 'test/unit/test_dialog.py')
-rw-r--r--test/unit/test_dialog.py143
1 files changed, 0 insertions, 143 deletions
diff --git a/test/unit/test_dialog.py b/test/unit/test_dialog.py
deleted file mode 100644
index 63af79e..0000000
--- a/test/unit/test_dialog.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# SPDX-License-Identifier: CC0-1.0
-
-"""
-Haketilo unit tests - showing an error/info/question dalog
-"""
-
-# This file is part of Haketilo
-#
-# Copyright (C) 2022, Wojtek Kosior <koszko@koszko.org>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the CC0 1.0 Universal License as published by
-# the Creative Commons Corporation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# CC0 1.0 Universal License for more details.
-
-import pytest
-
-from ..extension_crafting import ExtraHTML
-from ..script_loader import load_script
-
-@pytest.mark.ext_data({
- 'extra_html': ExtraHTML('html/dialog.html', {}),
- 'navigate_to': 'html/dialog.html'
-})
-@pytest.mark.usefixtures('webextension')
-def test_dialog_show_close(driver, execute_in_page):
- """
- A test case of basic dialog showing/closing.
- """
- execute_in_page(load_script('html/dialog.js'))
- 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);
- ''')
-
- 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]}}`);
- returnval([cb_calls, dialog_context.shown]);
- ''',
- i)
- assert cb_calls == ['show']
- assert is_shown == True
-
- page_source = driver.page_source
- assert f'sample_text_{i}' in page_source
- assert f'sample_text_{i - 1}' not in page_source
-
- # 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(
- '''{
- const values_cb = r => [cb_calls, r, dialog_context.shown];
- returnval(call_prom.then(values_cb));
- }''')
- assert cb_calls == ['show', 'hide']
- assert result == expected_result
- assert is_shown == False
-
-@pytest.mark.ext_data({
- 'extra_html': ExtraHTML('html/dialog.html', {}),
- 'navigate_to': 'html/dialog.html'
-})
-@pytest.mark.usefixtures('webextension')
-def test_dialog_queue(driver, execute_in_page):
- """
- A test case of queuing dialog display operations.
- """
- execute_in_page(load_script('html/dialog.js'))
- execute_in_page(
- '''
- let cb_calls = [], call_proms = [];
- const dialog_context = make(() => cb_calls.push("show"),
- () => cb_calls.push("hide"));
- document.body.append(dialog_context.main_div);
- ''')
-
- buts = driver.find_elements_by_tag_name('button')
- buts = dict([(but.text, but) for but in buts])
-
- for i in range(5):
- cb_calls, is_shown, msg_elem = execute_in_page(
- '''
- call_proms.push(ask(dialog_context, "somequestion" + arguments[0]));
- returnval([cb_calls, dialog_context.shown, dialog_context.msg]);
- ''',
- i)
- assert cb_calls == ['show']
- assert is_shown == True
- assert msg_elem.text == 'somequestion0'
-
- for i in range(5):
- buts['Yes' if i & 1 else 'No'].click()
- cb_calls, is_shown, msg_elem, result = execute_in_page(
- '''{
- const values_cb =
- r => [cb_calls, dialog_context.shown, dialog_context.msg, r];
- returnval(call_proms.splice(0, 1)[0].then(values_cb));
- }''')
- if i < 4:
- assert cb_calls == ['show']
- assert is_shown == True
- assert msg_elem.text == f'somequestion{i + 1}'
- else:
- assert cb_calls == ['show', 'hide']
- assert is_shown == False
-
- assert result == bool(i & 1)