Try to work around issue with missing older ids (fixes #1108)

This commit is contained in:
Raoul Snyman 2022-07-20 22:57:44 -07:00
parent f0dd979158
commit e96e180476
2 changed files with 66 additions and 4 deletions

View File

@ -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)

View File

@ -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