mirror of https://gitlab.com/openlp/openlp.git
Merge branch 'fix-invalid-folder-id' into 'master'
Try to work around issue with missing older ids (fixes #1108) Closes #1108 See merge request openlp/openlp!467
This commit is contained in:
commit
229d40f638
|
@ -342,7 +342,7 @@ class FolderLibraryItem(MediaManagerItem):
|
|||
tree_item = self.load_item(item, is_initial_load)
|
||||
if not tree_item:
|
||||
continue
|
||||
elif not item.folder_id:
|
||||
elif not item.folder_id or item.folder_id not in folder_items:
|
||||
self.list_view.addTopLevelItem(tree_item)
|
||||
else:
|
||||
folder_items[item.folder_id].addChild(tree_item)
|
||||
|
|
|
@ -20,19 +20,48 @@
|
|||
##########################################################################
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
from PyQt5 import QtCore, QtWidgets
|
||||
|
||||
from openlp.core.ui.library import FolderLibraryItem
|
||||
|
||||
|
||||
def test_folderlibrary_create_item_from_id(registry, settings):
|
||||
class MockItem(MagicMock):
|
||||
file_path = 'path/to/video.mp4'
|
||||
|
||||
|
||||
class MockFolder(MagicMock):
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def folder_library_item(registry, settings):
|
||||
mocked_item = MagicMock()
|
||||
mocked_manager = MagicMock()
|
||||
mocked_manager.get_object_filtered.return_value = mocked_item
|
||||
library_item = FolderLibraryItem(None, MagicMock(manager=mocked_manager), MockFolder, MockItem)
|
||||
return library_item
|
||||
|
||||
|
||||
def test_folderlibrary_retranslate_ui(folder_library_item):
|
||||
"""Test the retranslate_ui() method"""
|
||||
# GIVEN: A FolderLibraryItem object with mocks
|
||||
folder_library_item.add_folder_action = MagicMock()
|
||||
|
||||
# WHEN: retranslate_ui() is called
|
||||
folder_library_item.retranslate_ui()
|
||||
|
||||
# THEN: there should be no errors and the text should be correct
|
||||
folder_library_item.add_folder_action.setText.assert_called_once_with('Add folder')
|
||||
folder_library_item.add_folder_action.setToolTip.assert_called_once_with('Add folder.')
|
||||
|
||||
|
||||
def test_folderlibrary_create_item_from_id_path(registry, settings):
|
||||
"""Test the create_item_from_id method"""
|
||||
# GIVEN: An instance of the FolderLibraryItem
|
||||
mocked_item = MagicMock()
|
||||
mocked_manager = MagicMock()
|
||||
mocked_manager.get_object_filtered.return_value = mocked_item
|
||||
MockFolder = MagicMock()
|
||||
MockItem = MagicMock()
|
||||
library_item = FolderLibraryItem(None, MagicMock(manager=mocked_manager), MockFolder, MockItem)
|
||||
|
||||
# WHEN: create_item_from_id is called
|
||||
|
@ -41,3 +70,36 @@ def test_folderlibrary_create_item_from_id(registry, settings):
|
|||
# THEN: The result should be a QTreeWidgetItem with a mocked object as data
|
||||
assert isinstance(result, QtWidgets.QTreeWidgetItem)
|
||||
assert result.data(0, QtCore.Qt.UserRole) is mocked_item
|
||||
|
||||
|
||||
def test_folderlibrary_create_item_from_id_object(registry, settings):
|
||||
"""Test the create_item_from_id method"""
|
||||
# GIVEN: An instance of the FolderLibraryItem
|
||||
mocked_item = MagicMock()
|
||||
mocked_manager = MagicMock()
|
||||
mocked_manager.get_object_filtered.return_value = mocked_item
|
||||
library_item = FolderLibraryItem(None, MagicMock(manager=mocked_manager), MockFolder, MockItem)
|
||||
|
||||
# WHEN: create_item_from_id is called
|
||||
result = library_item.create_item_from_id(mocked_item)
|
||||
|
||||
# THEN: The result should be a QTreeWidgetItem with a mocked object as data
|
||||
assert isinstance(result, QtWidgets.QTreeWidgetItem)
|
||||
assert result.data(0, QtCore.Qt.UserRole) is mocked_item
|
||||
|
||||
|
||||
def test_folderlibrary_current_folder(folder_library_item):
|
||||
"""Test that the current_folder property returns the correct folder"""
|
||||
# GIVEN: A whole buncha mocks
|
||||
mocked_folder = MockFolder()
|
||||
mocked_item = MockItem()
|
||||
mocked_list_folder = MagicMock(**{'data.return_value': mocked_folder}, spec=QtWidgets.QTreeWidgetItem)
|
||||
mocked_list_item = MagicMock(**{'data.return_value': mocked_item, 'parent.return_value': mocked_list_folder})
|
||||
folder_library_item.list_view = MagicMock()
|
||||
folder_library_item.list_view.selectedItems.return_value = [mocked_list_item]
|
||||
|
||||
# WHEN: We access the property
|
||||
folder = folder_library_item.current_folder
|
||||
|
||||
# THEN: The current folder should be the mocked folder
|
||||
assert folder is mocked_folder
|
||||
|
|
Loading…
Reference in New Issue