forked from openlp/openlp
92 lines
3.9 KiB
Python
92 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
##########################################################################
|
|
# OpenLP - Open Source Lyrics Projection #
|
|
# ---------------------------------------------------------------------- #
|
|
# Copyright (c) 2008-2021 OpenLP Developers #
|
|
# ---------------------------------------------------------------------- #
|
|
# This program is free software: you can redistribute it and/or modify #
|
|
# it under the terms of the GNU General Public License as published by #
|
|
# the Free Software Foundation, either version 3 of the License, or #
|
|
# (at your option) any later version. #
|
|
# #
|
|
# This program is distributed in the hope that it will be useful, #
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
|
# GNU General Public License for more details. #
|
|
# #
|
|
# You should have received a copy of the GNU General Public License #
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>. #
|
|
##########################################################################
|
|
"""
|
|
Test the Confirmation Form
|
|
"""
|
|
from unittest.mock import patch
|
|
from PyQt5 import QtWidgets, QtTest, QtCore
|
|
|
|
from openlp.core.ui.confirmationform import ConfirmationForm
|
|
|
|
|
|
def test_confirmation_form_ui_setup(settings):
|
|
"""
|
|
Test checking the UI elements are set up correctly
|
|
"""
|
|
# GIVEN: A ConfirmationForm class
|
|
|
|
# WHEN: A ConfirmationForm object is created
|
|
form = ConfirmationForm(None, "title", ["item1", "item2", "item3"], "confirm?")
|
|
|
|
# THEN: The UI elements should reflect the parameters passed
|
|
assert form.windowTitle() == "title"
|
|
assert form.findChild(QtWidgets.QListView, "confirmation listview").model().rowCount() == 3
|
|
assert form.findChild(QtWidgets.QListView, "confirmation listview").model().item(0).text() == "item1"
|
|
assert form.findChild(QtWidgets.QListView, "confirmation listview").model().item(1).text() == "item2"
|
|
assert form.findChild(QtWidgets.QListView, "confirmation listview").model().item(2).text() == "item3"
|
|
assert form.findChild(QtWidgets.QLabel, "message").text() == "confirm?"
|
|
|
|
|
|
@patch('openlp.core.ui.confirmationform.ConfirmationForm.accept')
|
|
@patch('openlp.core.ui.confirmationform.ConfirmationForm.reject')
|
|
def test_confirmation_form_yes_button(mocked_reject, mocked_accept, settings):
|
|
"""
|
|
Test when the Yes button is clicked
|
|
"""
|
|
# GIVEN: A ConfirmationForm
|
|
form = ConfirmationForm(None, "title", ["item1", "item2", "item3"], "confirm?")
|
|
form.accept = mocked_accept
|
|
form.reject = mocked_reject
|
|
|
|
# WHEN: The Yes button is clicked
|
|
buttons = form.findChildren(QtWidgets.QPushButton)
|
|
for button in buttons:
|
|
if 'Yes' in button.text():
|
|
QtTest.QTest.mouseClick(button, QtCore.Qt.LeftButton)
|
|
break
|
|
|
|
# THEN: accept is called
|
|
assert form.accept.call_count == 1
|
|
assert form.reject.call_count == 0
|
|
|
|
|
|
@patch('openlp.core.ui.confirmationform.ConfirmationForm.accept')
|
|
@patch('openlp.core.ui.confirmationform.ConfirmationForm.reject')
|
|
def test_confirmation_form_no_button(mocked_reject, mocked_accept, settings):
|
|
"""
|
|
Test when the No button is clicked
|
|
"""
|
|
# GIVEN: A ConfirmationForm
|
|
form = ConfirmationForm(None, "title", ["item1", "item2", "item3"], "confirm?")
|
|
form.accept = mocked_accept
|
|
form.reject = mocked_reject
|
|
|
|
# WHEN: The No button is clicked
|
|
buttons = form.findChildren(QtWidgets.QPushButton)
|
|
for button in buttons:
|
|
if 'No' in button.text():
|
|
QtTest.QTest.mouseClick(button, QtCore.Qt.LeftButton)
|
|
break
|
|
|
|
# THEN: reject is called
|
|
assert form.accept.call_count == 0
|
|
assert form.reject.call_count == 1
|