summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormohite-abhi <b518004@iiit-bh.ac.in>2022-01-25 04:22:50 +0530
committermohite-abhi <b518004@iiit-bh.ac.in>2022-01-25 04:22:50 +0530
commitef87b5df725efe89cff68f8b4d1f60905a6f4b8f (patch)
tree5992b446102bfbf60709154f5fc2266a9c7bd68e
parentd89d5853d393390b3a62c33084bf8150858a2fee (diff)
downloadqutebrowser-ef87b5df725efe89cff68f8b4d1f60905a6f4b8f.tar.gz
qutebrowser-ef87b5df725efe89cff68f8b4d1f60905a6f4b8f.zip
Add tests for tab focus completion delete
-rw-r--r--qutebrowser/completion/models/miscmodels.py10
-rw-r--r--tests/unit/completion/test_models.py28
2 files changed, 34 insertions, 4 deletions
diff --git a/qutebrowser/completion/models/miscmodels.py b/qutebrowser/completion/models/miscmodels.py
index 0aa30d184..77072c720 100644
--- a/qutebrowser/completion/models/miscmodels.py
+++ b/qutebrowser/completion/models/miscmodels.py
@@ -103,7 +103,7 @@ def session(*, info=None):
return model
-def _tabs(*, win_id_filter=lambda _win_id: True, add_win_id=True, cur_win_id=0):
+def _tabs(*, win_id_filter=lambda _win_id: True, add_win_id=True, cur_win_id=None):
"""Helper to get the completion model for tabs/other_tabs.
Args:
@@ -114,9 +114,11 @@ def _tabs(*, win_id_filter=lambda _win_id: True, add_win_id=True, cur_win_id=0):
"""
def delete_tab(data):
"""Close the selected tab."""
- win_id = cur_win_id
- # data[0] can be 'tabInd' or 'winID/tabInd'
- tab_index = data[0].split('/')[-1]
+ if cur_win_id is None:
+ win_id, tab_index = data[0].split('/')
+ else:
+ win_id = cur_win_id
+ tab_index = data[0]
tabbed_browser = objreg.get('tabbed-browser', scope='window',
window=int(win_id))
diff --git a/tests/unit/completion/test_models.py b/tests/unit/completion/test_models.py
index 9e6743083..b94c19a06 100644
--- a/tests/unit/completion/test_models.py
+++ b/tests/unit/completion/test_models.py
@@ -867,6 +867,34 @@ def test_tab_completion_delete(qtmodeltester, fake_web_tab, win_registry,
QUrl('https://duckduckgo.com')]
+def test_tab_focus_completion_delete(qtmodeltester, fake_web_tab, win_registry,
+ tabbed_browser_stubs, info):
+ """Verify closing a tab by deleting it from the completion widget."""
+ tabbed_browser_stubs[0].widget.tabs = [
+ fake_web_tab(QUrl('https://github.com'), 'GitHub', 0),
+ fake_web_tab(QUrl('https://wikipedia.org'), 'Wikipedia', 1),
+ fake_web_tab(QUrl('https://duckduckgo.com'), 'DuckDuckGo', 2)
+ ]
+ tabbed_browser_stubs[1].widget.tabs = [
+ fake_web_tab(QUrl('https://wiki.archlinux.org'), 'ArchWiki', 0),
+ ]
+ model = miscmodels.tab_focus(info=info)
+ model.set_pattern('')
+ qtmodeltester.check(model)
+
+ parent = model.index(0, 0)
+ idx = model.index(1, 0, parent)
+
+ # # sanity checks
+ assert model.data(parent) == "Tabs"
+ assert model.data(idx) == '2'
+
+ model.delete_cur_item(idx)
+ actual = [tab.url() for tab in tabbed_browser_stubs[0].widget.tabs]
+ assert actual == [QUrl('https://github.com'),
+ QUrl('https://duckduckgo.com')]
+
+
def test_tab_completion_not_sorted(qtmodeltester, fake_web_tab, win_registry,
tabbed_browser_stubs):
"""Ensure that the completion row order is the same as tab index order.