Merge branch 'issue-1179' into 'master'

Fix issue #1179 (generating slide data for a folder)

Closes #1179

See merge request openlp/openlp!498
This commit is contained in:
Tim Bentley 2022-10-21 06:25:54 +00:00
commit 64e365b0fb
2 changed files with 60 additions and 1 deletions

View File

@ -300,6 +300,9 @@ class PresentationMediaItem(FolderLibraryItem):
return False
items = [self.list_view.itemFromIndex(item) if isinstance(item, QtCore.QModelIndex) else item
for item in items]
# If this is a folder, show an error message and return
if items and isinstance(items[0].data(0, QtCore.Qt.UserRole), Folder):
return False
if file_path is None:
file_path = Path(items[0].data(0, QtCore.Qt.UserRole).file_path)
file_type = file_path.suffix.lower()[1:]

View File

@ -24,8 +24,11 @@ This module contains tests for the lib submodule of the Presentations plugin.
from pathlib import Path
from unittest.mock import MagicMock, PropertyMock, call, patch
from PyQt5 import QtCore, QtWidgets
from openlp.core.lib import ServiceItemContext
from openlp.core.lib.serviceitem import ItemCapabilities
from openlp.plugins.presentations.lib.db import Folder, Item
from openlp.plugins.presentations.lib.mediaitem import PresentationMediaItem
@ -128,7 +131,60 @@ def test_clean_up_thumbnails_missing_file(media_item):
mocked_doc.assert_has_calls([call.get_thumbnail_path(1, True), call.presentation_deleted()], True)
def test_pdf_generate_slide_data(media_item):
def test_generate_slide_data_from_folder(media_item):
"""
Test that the generate slide data function exits early when the item is a Folder instead of an Item
"""
# GIVEN: A Folder instance
media_item.list_view = MagicMock()
mocked_service_item = MagicMock()
folder = Folder(id=1, name='Mock folder')
list_item = QtWidgets.QTreeWidgetItem(None)
list_item.setData(0, QtCore.Qt.UserRole, folder)
# WHEN: generate_slide_data is called
result = media_item.generate_slide_data(mocked_service_item, item=list_item)
# THEN: The result should be false
assert result is False
def test_generate_slide_data_from_list_view(media_item):
"""
Test that the generate slide data function exits early when there are more than 1 items selected
"""
# GIVEN: A Folder instance
mocked_service_item = MagicMock()
list_item = QtWidgets.QTreeWidgetItem(None)
media_item.list_view = MagicMock(selectedItems=MagicMock(return_value=[list_item, list_item]))
# WHEN: generate_slide_data is called
result = media_item.generate_slide_data(mocked_service_item)
# THEN: The result should be false
assert result is False
def test_generate_slide_data_with_file_path_from_item(media_item):
"""
Test that the generate slide data function exits early when there is no display type combobox text
"""
# GIVEN: A Folder instance
media_item.list_view = MagicMock()
media_item.display_type_combo_box = MagicMock(currentText=MagicMock(return_value=''))
mocked_service_item = MagicMock()
item = Item(id=1, file_path='path/to/presentation.odp')
list_item = QtWidgets.QTreeWidgetItem(None)
list_item.setData(0, QtCore.Qt.UserRole, item)
# WHEN: generate_slide_data is called
result = media_item.generate_slide_data(mocked_service_item, item=list_item)
# THEN: The result should be false
assert result is False
def test_generate_slide_data_from_pdf(media_item):
"""
Test that the generate slide data function makes the correct ajustments to a pdf service item.
"""