diff --git a/src/tagstudio/qt/mixed/mirror_entries_modal.py b/src/tagstudio/qt/mixed/mirror_entries_modal.py index d06627a63..623464214 100644 --- a/src/tagstudio/qt/mixed/mirror_entries_modal.py +++ b/src/tagstudio/qt/mixed/mirror_entries_modal.py @@ -67,13 +67,15 @@ def refresh_list(self): ) self.model.clear() - for i in self.tracker.groups: - self.model.appendRow(QStandardItem(str(i))) + for entries in self.tracker.groups: + item = QStandardItem("\n".join(str(entry.path) for entry in entries)) + item.setEditable(False) + self.model.appendRow(item) def mirror_entries(self): def displayed_text(x): return Translations.format( - "entries.mirror.label", idx=x + 1, count=self.tracker.groups_count + "entries.mirror.label", idx=x + 1, total=self.tracker.groups_count ) pw = ProgressWidget( diff --git a/tests/qt/test_mirror_entries_modal.py b/tests/qt/test_mirror_entries_modal.py new file mode 100644 index 000000000..89601dccc --- /dev/null +++ b/tests/qt/test_mirror_entries_modal.py @@ -0,0 +1,56 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + +from pathlib import Path +from unittest.mock import Mock + +from pytestqt.qtbot import QtBot + +from tagstudio.core.library.alchemy.library import Library +from tagstudio.core.library.alchemy.registries.dupe_files_registry import DupeFilesRegistry +from tagstudio.qt.mixed.mirror_entries_modal import MirrorEntriesModal +from tagstudio.qt.translations import Translations + + +def _registry_with_groups(library: Library) -> DupeFilesRegistry: + registry = DupeFilesRegistry(library=library) + registry.groups = [list(library.get_entries_full([1, 2]))] + return registry + + +def test_refresh_list_shows_entry_paths(qtbot: QtBot, library: Library) -> None: + modal = MirrorEntriesModal(Mock(), _registry_with_groups(library)) + qtbot.addWidget(modal) + + modal.refresh_list() + + item_text = modal.model.item(0).text() + assert item_text == f"foo.txt\n{Path('one/two/bar.md')}" + assert "Entry" not in item_text + + +def test_mirror_entries_progress_label_uses_group_count( + qtbot: QtBot, library: Library, monkeypatch +) -> None: + labels: list[str] = [] + + class FakeProgressWidget: + def __init__(self, **kwargs) -> None: + pass + + def setWindowTitle(self, title: str) -> None: # noqa: N802 + pass + + def from_iterable_function(self, function, update_label_callback, *done_callbacks) -> None: + labels.append(update_label_callback(0)) + + monkeypatch.setattr( + "tagstudio.qt.mixed.mirror_entries_modal.ProgressWidget", FakeProgressWidget + ) + modal = MirrorEntriesModal(Mock(selected=[]), _registry_with_groups(library)) + qtbot.addWidget(modal) + + modal.mirror_entries() + + assert labels == [Translations.format("entries.mirror.label", idx=1, total=1)]