From 25ce352047adaa85967063dd425f13d9cf7191ee Mon Sep 17 00:00:00 2001 From: Tomas Groth Date: Sat, 4 Jul 2015 23:19:13 +0100 Subject: [PATCH] Fix traceback in OSIS import on empty verse tag. --- openlp/plugins/bibles/lib/osis.py | 3 +- .../openlp_plugins/bibles/test_osisimport.py | 30 +++++++++++++++++ .../bibles/osis-dk1933-empty-verse.xml | 33 +++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 tests/resources/bibles/osis-dk1933-empty-verse.xml diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 6bf294ff8..12b2f2494 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -153,7 +153,8 @@ class OSISBible(BibleDB): # Verse-tags contains the text for verse in chapter: verse_number = verse.get("osisID").split('.')[2] - self.create_verse(db_book.id, chapter_number, verse_number, verse.text.strip()) + if verse.text: + self.create_verse(db_book.id, chapter_number, verse_number, verse.text.strip()) self.wizard.increment_progress_bar( translate('BiblesPlugin.OsisImport', 'Importing %(bookname)s %(chapter)s...') % {'bookname': db_book.name, 'chapter': chapter_number}) diff --git a/tests/functional/openlp_plugins/bibles/test_osisimport.py b/tests/functional/openlp_plugins/bibles/test_osisimport.py index 18985f4e3..42e429baa 100644 --- a/tests/functional/openlp_plugins/bibles/test_osisimport.py +++ b/tests/functional/openlp_plugins/bibles/test_osisimport.py @@ -152,3 +152,33 @@ class TestOsisImport(TestCase): self.assertTrue(importer.create_verse.called) for verse_tag, verse_text in test_data['verses']: importer.create_verse.assert_any_call(importer.create_book().id, '1', verse_tag, verse_text) + + def file_import_empty_verse_tags_test(self): + """ + Test the actual import of OSIS Bible file, with an empty verse tags. + """ + # GIVEN: Test files with a mocked out "manager", "import_wizard", and mocked functions + # get_book_ref_id_by_name, create_verse, create_book, session and get_language. + result_file = open(os.path.join(TEST_PATH, 'dk1933.json'), 'rb') + test_data = json.loads(result_file.read().decode()) + bible_file = 'osis-dk1933-empty-verse.xml' + with patch('openlp.plugins.bibles.lib.osis.OSISBible.application'): + mocked_manager = MagicMock() + mocked_import_wizard = MagicMock() + importer = OSISBible(mocked_manager, path='.', name='.', filename='') + importer.wizard = mocked_import_wizard + importer.get_book_ref_id_by_name = MagicMock() + importer.create_verse = MagicMock() + importer.create_book = MagicMock() + importer.session = MagicMock() + importer.get_language = MagicMock() + importer.get_language.return_value = 'Danish' + + # WHEN: Importing bible file + importer.filename = os.path.join(TEST_PATH, bible_file) + importer.do_import() + + # THEN: The create_verse() method should have been called with each verse in the file. + self.assertTrue(importer.create_verse.called) + for verse_tag, verse_text in test_data['verses']: + importer.create_verse.assert_any_call(importer.create_book().id, '1', verse_tag, verse_text) diff --git a/tests/resources/bibles/osis-dk1933-empty-verse.xml b/tests/resources/bibles/osis-dk1933-empty-verse.xml new file mode 100644 index 000000000..0fee29c58 --- /dev/null +++ b/tests/resources/bibles/osis-dk1933-empty-verse.xml @@ -0,0 +1,33 @@ + + + + +
+ + Dette er Biblen + Bible.DanDetteBiblen + Bible.KJV + + + Bible.KJV + +
+
+
+ + I Begyndelsen skabte Gud Himmelen og Jorden. + Og Jorden var øde og tom, og der var Mørke over Verdensdybet. Men Guds Ånd svævede over Vandene.

+ Og Gud sagde: "Der blive Lys!" Og der blev Lys. + Og Gud så, at Lyset var godt, og Gud satte Skel mellem Lyset og Mørket, + og Gud kaldte Lyset Dag, og Mørket kaldte han Nat. Og det blev Aften, og det blev Morgen, første Dag.

+ Derpå sagde Gud: "Der blive en Hvælving midt i Vandene til at skille Vandene ad!" + Og således skete det: Gud gjorde Hvælvingen og skilte Vandet under Hvælvingen fra Vandet over Hvælvingen; + og Gud kaldte Hvælvingen Himmel. Og det blev Aften, og det blev Morgen, anden Dag.

+ Derpå sagde Gud: "Vandet under Himmelen samle sig på eet Sted, så det faste Land kommer til Syne!" Og således skete det; + og Gud kaldte det faste Land Jord, og Stedet, hvor Vandet samlede sig, kaldte han Hav. Og Gud så, at det var godt. + + +

+
+
+