# -*- coding: utf-8 -*- ########################################################################## # OpenLP - Open Source Lyrics Projection # # ---------------------------------------------------------------------- # # Copyright (c) 2008-2022 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 . # ########################################################################## """ Interface tests to test the openlp.core.projectors.editform.ProjectorEditForm() class and methods. """ import pytest from unittest.mock import patch from openlp.core.projectors.db import Projector, ProjectorDB from openlp.core.projectors.editform import ProjectorEditForm from tests.resources.projector.data import TEST1_DATA, TEST_DB @pytest.fixture() def projector_form(settings): with patch('openlp.core.projectors.db.init_url') as mocked_init_url: mocked_init_url.return_value = 'sqlite:///' + TEST_DB projectordb = ProjectorDB() projector_frm = ProjectorEditForm(projectordb=projectordb) yield projector_frm projectordb.session.close() del projector_frm @patch('openlp.core.projectors.editform.QtWidgets.QDialog.exec') def test_edit_form_add_projector(mocked_exec, projector_form): """ Test projector edit form with no parameters creates a new entry. :return: None """ # GIVEN: Mocked setup # WHEN: Calling edit form with no parameters projector_form.exec() item = projector_form.projector # THEN: Should be creating a new instance assert projector_form.new_projector, 'Projector edit form should be marked as a new entry' assert (item.ip is None and item.name is None), 'Projector edit form should have a new Projector() instance to edit' @patch('openlp.core.projectors.editform.QtWidgets.QDialog.exec') def test_edit_form_edit_projector(mocked_exec, projector_form): """ Test projector edit form with existing projector entry :return: """ # GIVEN: Mocked setup # WHEN: Calling edit form with existing projector instance projector_form.exec(projector=Projector(**TEST1_DATA)) item = projector_form.projector # THEN: Should be editing an existing entry assert projector_form.new_projector is False, 'Projector edit form should be marked as existing entry' assert item.ip is TEST1_DATA['ip'] and item.name is TEST1_DATA['name'], \ 'Projector edit form should have TEST1_DATA() instance to edit'