def test_file_import_no_book_name(self): """ Test the import of Zefania Bible file without book names """ # 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. test_data = load_external_result_data(TEST_PATH / 'rst.json') bible_file = 'zefania-rst.xml' with patch('openlp.plugins.bibles.lib.importers.zefania.ZefaniaBible.application'): mocked_manager = MagicMock() mocked_import_wizard = MagicMock() importer = ZefaniaBible(mocked_manager, path='.', name='.', file_path=None) importer.wizard = mocked_import_wizard importer.create_verse = MagicMock() importer.create_book = MagicMock() importer.session = MagicMock() importer.get_language = MagicMock() importer.get_language.return_value = 'Russian' # WHEN: Importing bible file importer.file_path = TEST_PATH / bible_file importer.do_import() # THEN: The create_verse() method should have been called with each verse in the file. assert importer.create_verse.called is True for verse_tag, verse_text in test_data['verses']: importer.create_verse.assert_any_call(importer.create_book().id, 1, verse_tag, verse_text) importer.create_book.assert_any_call('Exodus', 2, 1)
def test_file_import(self): """ Test the actual import of OpenSong Bible file """ # 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. test_data = load_external_result_data(TEST_PATH / 'dk1933.json') bible_file = 'opensong-dk1933.xml' with patch( 'openlp.plugins.bibles.lib.importers.opensong.OpenSongBible.application' ): mocked_manager = MagicMock() mocked_import_wizard = MagicMock() importer = OpenSongBible(mocked_manager, path='.', name='.', file_path=None) 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.file_path = TEST_PATH / bible_file importer.do_import() # THEN: The create_verse() method should have been called with each verse in the file. assert importer.create_verse.called is True for verse_tag, verse_text in test_data['verses']: importer.create_verse.assert_any_call( importer.create_book().id, 1, int(verse_tag), verse_text)
def test_file_import(self): """ Test the actual import of CSV Bible file """ # 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. test_data = load_external_result_data(TEST_PATH / 'dk1933.json') books_file = TEST_PATH / 'dk1933-books.csv' verses_file = TEST_PATH / 'dk1933-verses.csv' with patch('openlp.plugins.bibles.lib.importers.csvbible.CSVBible.application'): mocked_manager = MagicMock() mocked_import_wizard = MagicMock() importer = CSVBible(mocked_manager, path='.', name='.', books_path=books_file, verse_path=verses_file) 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' importer.get_book = MagicMock() # WHEN: Importing bible file importer.do_import() # THEN: The create_verse() method should have been called with each verse in the file. assert importer.create_verse.called is True for verse_tag, verse_text in test_data['verses']: importer.create_verse.assert_any_call(importer.get_book().id, 1, verse_tag, verse_text) importer.create_book.assert_any_call('1. Mosebog', importer.get_book_ref_id_by_name(), 1) importer.create_book.assert_any_call('1. Krønikebog', importer.get_book_ref_id_by_name(), 1)
def test_simple_import(self, mocked_pysword_modules, mocked_application): """ Test that a simple SWORD import works """ # 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. # Also mocked pysword structures mocked_manager = MagicMock() mocked_import_wizard = MagicMock() importer = SwordBible(mocked_manager, path='.', name='.', file_path=None, sword_key='', sword_path='') test_data = load_external_result_data(TEST_PATH / 'dk1933.json') 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(return_value='Danish') mocked_bible = MagicMock() mocked_genesis = MagicMock() mocked_genesis.name = 'Genesis' mocked_genesis.num_chapters = 1 books = {'ot': [mocked_genesis]} mocked_structure = MagicMock() mocked_structure.get_books.return_value = books mocked_bible.get_structure.return_value = mocked_structure mocked_bible.get_iter.return_value = [ verse[1] for verse in test_data['verses'] ] mocked_module = MagicMock() mocked_module.get_bible_from_module.return_value = mocked_bible mocked_pysword_modules.SwordModules.return_value = mocked_module # WHEN: Importing bible file importer.do_import() # THEN: The create_verse() method should have been called with each verse in the file. assert importer.create_verse.called is True for verse_tag, verse_text in test_data['verses']: importer.create_verse.assert_any_call(importer.create_book().id, 1, int(verse_tag), verse_text)
def test_detect_chorus(self, mocked_songimport): """ Test importing lyrics with a chorus in OPS Pro """ # GIVEN: A mocked out SongImport class, a mocked out "manager" and a mocked song and lyrics entry mocked_manager = MagicMock() importer = OPSProImport(mocked_manager, file_paths=[]) importer.finish = MagicMock() song, lyrics = _build_data('you are so faithfull.txt', False) # WHEN: An importer object is created importer.process_song(song, lyrics, []) # THEN: The imported data should look like expected result_data = load_external_result_data(TEST_PATH / 'You are so faithful.json') assert importer.verses == _get_item(result_data, 'verses') assert importer.verse_order_list_generated == _get_item( result_data, 'verse_order_list')
def test_trans_tag(self, mocked_songimport): """ Test importing lyrics with various translations tags works in OPS Pro """ # GIVEN: A mocked out SongImport class, a mocked out "manager" and a mocked song and lyrics entry mocked_manager = MagicMock() importer = OPSProImport(mocked_manager, file_paths=[]) importer.finish = MagicMock() song, lyrics = _build_data('amazing grace3.txt', True) # WHEN: An importer object is created importer.process_song(song, lyrics, []) # THEN: The imported data should look like expected result_data = load_external_result_data(TEST_PATH / 'Amazing Grace3.json') assert importer.verses == _get_item(result_data, 'verses') assert importer.verse_order_list_generated == _get_item( result_data, 'verse_order_list')
def test_parse_xml_dump(self, mocked_songimport): """ Test importing a simple XML dump in LiveWorshipImport """ # GIVEN: A mocked out SongImport class, a mocked out "manager" and a simple XML dump mocked_manager = MagicMock() importer = LiveWorshipImport(mocked_manager, file_paths=[]) importer.finish = MagicMock() importer.import_wizard = MagicMock() importer.dump_file = TEST_PATH / 'valentina-db-simplified-dump.xml' # WHEN: The XML is loaded and processed importer.load_xml_dump() importer.extract_songs() # THEN: The imported data should look like expected result_data = load_external_result_data(TEST_PATH / 'A Child Of The King.json') assert importer.title == _get_item(result_data, 'title') assert importer.verses == _get_item(result_data, 'verses') assert importer.topics[0] == _get_item(result_data, 'topics')[0] assert importer.authors[0][0] == _get_item(result_data, 'authors')[0] assert importer.authors[1][0] == _get_item(result_data, 'authors')[1]