forked from openlp/openlp
More BibleImport tests
This commit is contained in:
parent
9a049929fc
commit
4a71bda0d1
@ -27,6 +27,7 @@ from io import BytesIO
|
|||||||
from lxml import etree, objectify
|
from lxml import etree, objectify
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
from PyQt5.QtWidgets import QDialog
|
||||||
|
|
||||||
from openlp.core.common.languages import Language
|
from openlp.core.common.languages import Language
|
||||||
from openlp.core.lib.exceptions import ValidationError
|
from openlp.core.lib.exceptions import ValidationError
|
||||||
@ -223,6 +224,100 @@ class TestBibleImport(TestCase):
|
|||||||
self.assertFalse(instance.save_meta.called)
|
self.assertFalse(instance.save_meta.called)
|
||||||
self.assertIsNone(result)
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
def get_book_ref_id_by_name_get_book_test(self):
|
||||||
|
"""
|
||||||
|
Test get_book_ref_id_by_name when the book is found as a book in BiblesResourcesDB
|
||||||
|
"""
|
||||||
|
# GIVEN: An instance of BibleImport and a mocked BiblesResourcesDB which returns a book id when get_book is
|
||||||
|
# called
|
||||||
|
with patch.object(BibleImport, 'log_debug'), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.BiblesResourcesDB',
|
||||||
|
**{'get_book.return_value':{'id': 20}}):
|
||||||
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: Calling get_book_ref_id_by_name
|
||||||
|
result = instance.get_book_ref_id_by_name('Gen', 66, 4)
|
||||||
|
|
||||||
|
# THEN: The bible id should be returned
|
||||||
|
self.assertEqual(result,20)
|
||||||
|
|
||||||
|
def get_book_ref_id_by_name_get_alternative_book_name_test(self):
|
||||||
|
"""
|
||||||
|
Test get_book_ref_id_by_name when the book is found as an alternative book in BiblesResourcesDB
|
||||||
|
"""
|
||||||
|
# GIVEN: An instance of BibleImport and a mocked BiblesResourcesDB which returns a book id when
|
||||||
|
# get_alternative_book_name is called
|
||||||
|
with patch.object(BibleImport, 'log_debug'), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.BiblesResourcesDB',
|
||||||
|
**{'get_book.return_value': None, 'get_alternative_book_name.return_value': 30}):
|
||||||
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: Calling get_book_ref_id_by_name
|
||||||
|
result = instance.get_book_ref_id_by_name('Gen', 66, 4)
|
||||||
|
|
||||||
|
# THEN: The bible id should be returned
|
||||||
|
self.assertEqual(result, 30)
|
||||||
|
|
||||||
|
def get_book_ref_id_by_name_get_book_reference_id_test(self):
|
||||||
|
"""
|
||||||
|
Test get_book_ref_id_by_name when the book is found as a book in AlternativeBookNamesDB
|
||||||
|
"""
|
||||||
|
# GIVEN: An instance of BibleImport and a mocked AlternativeBookNamesDB which returns a book id when
|
||||||
|
# get_book_reference_id is called
|
||||||
|
with patch.object(BibleImport, 'log_debug'), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.BiblesResourcesDB',
|
||||||
|
**{'get_book.return_value': None, 'get_alternative_book_name.return_value': None}), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.AlternativeBookNamesDB',
|
||||||
|
**{'get_book_reference_id.return_value': 40}):
|
||||||
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: Calling get_book_ref_id_by_name
|
||||||
|
result = instance.get_book_ref_id_by_name('Gen', 66, 4)
|
||||||
|
|
||||||
|
# THEN: The bible id should be returned
|
||||||
|
self.assertEqual(result, 40)
|
||||||
|
|
||||||
|
def get_book_ref_id_by_name_book_name_form_rejected_test(self):
|
||||||
|
"""
|
||||||
|
Test get_book_ref_id_by_name when the user rejects the BookNameForm
|
||||||
|
"""
|
||||||
|
# GIVEN: An instance of BibleImport and a mocked BookNameForm which simulates a user rejecting the dialog
|
||||||
|
with patch.object(BibleImport, 'log_debug'), patch.object(BibleImport, 'get_books'), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.BiblesResourcesDB',
|
||||||
|
**{'get_book.return_value': None, 'get_alternative_book_name.return_value': None}), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.AlternativeBookNamesDB',
|
||||||
|
**{'get_book_reference_id.return_value': None}), \
|
||||||
|
patch('openlp.plugins.bibles.forms.BookNameForm',
|
||||||
|
return_value=MagicMock(**{'exec.return_value': QDialog.Rejected})):
|
||||||
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: Calling get_book_ref_id_by_name
|
||||||
|
result = instance.get_book_ref_id_by_name('Gen', 66, 4)
|
||||||
|
|
||||||
|
# THEN: None should be returned
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
||||||
|
def get_book_ref_id_by_name_book_name_form_accepted_test(self):
|
||||||
|
"""
|
||||||
|
Test get_book_ref_id_by_name when the user accepts the BookNameForm
|
||||||
|
"""
|
||||||
|
# GIVEN: An instance of BibleImport and a mocked BookNameForm which simulates a user accepting the dialog
|
||||||
|
with patch.object(BibleImport, 'log_debug'), patch.object(BibleImport, 'get_books'), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.BiblesResourcesDB',
|
||||||
|
**{'get_book.return_value': None, 'get_alternative_book_name.return_value': None}), \
|
||||||
|
patch('openlp.plugins.bibles.lib.bibleimport.AlternativeBookNamesDB',
|
||||||
|
**{'get_book_reference_id.return_value': None}) as mocked_alternative_book_names_db, \
|
||||||
|
patch('openlp.plugins.bibles.forms.BookNameForm',
|
||||||
|
return_value=MagicMock(**{'exec.return_value': QDialog.Accepted, 'book_id':50})):
|
||||||
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
# WHEN: Calling get_book_ref_id_by_name
|
||||||
|
result = instance.get_book_ref_id_by_name('Gen', 66, 4)
|
||||||
|
|
||||||
|
# THEN: An alternative book name should be created and a bible id should be returned
|
||||||
|
mocked_alternative_book_names_db.create_alternative_book_name.assert_called_once_with('Gen', 50, 4)
|
||||||
|
self.assertEqual(result, 50)
|
||||||
|
|
||||||
def is_compressed_compressed_test(self):
|
def is_compressed_compressed_test(self):
|
||||||
"""
|
"""
|
||||||
Test is_compressed when the 'file' being tested is compressed
|
Test is_compressed when the 'file' being tested is compressed
|
||||||
@ -242,9 +337,9 @@ class TestBibleImport(TestCase):
|
|||||||
|
|
||||||
def is_compressed_not_compressed_test(self):
|
def is_compressed_not_compressed_test(self):
|
||||||
"""
|
"""
|
||||||
Test is_compressed when the 'file' being tested is compressed
|
Test is_compressed when the 'file' being tested is not compressed
|
||||||
"""
|
"""
|
||||||
# GIVEN: An instance of BibleImport and a mocked is_zipfile which returns True
|
# GIVEN: An instance of BibleImport and a mocked is_zipfile which returns False
|
||||||
with patch('openlp.plugins.bibles.lib.bibleimport.is_zipfile', return_value=False):
|
with patch('openlp.plugins.bibles.lib.bibleimport.is_zipfile', return_value=False):
|
||||||
instance = BibleImport(MagicMock())
|
instance = BibleImport(MagicMock())
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user