Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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')
Ejemplo n.º 6
0
    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')
Ejemplo n.º 7
0
    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]