Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/tagstudio/qt/mixed/mirror_entries_modal.py
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
56 changes: 56 additions & 0 deletions tests/qt/test_mirror_entries_modal.py
Original file line number Diff line number Diff line change
@@ -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)]