← Back to team overview

openlp-core team mailing list archive

Re: [Merge] lp:~phill-ridout/openlp/pathlib9 into lp:openlp

 

Review: Needs Fixing

I think there's one instance you need to change. Please see my comments below for more guidance.

Diff comments:

> 
> === modified file 'tests/functional/openlp_plugins/bibles/test_bibleimport.py'
> --- tests/functional/openlp_plugins/bibles/test_bibleimport.py	2017-10-07 07:05:07 +0000
> +++ tests/functional/openlp_plugins/bibles/test_bibleimport.py	2017-10-11 06:59:39 +0000
> @@ -48,7 +48,7 @@
>              b'    <data><unsupported>Test<x>data</x><y>to</y>discard</unsupported></data>\n'
>              b'</root>'
>          )
> -        self.open_patcher = patch('builtins.open')
> +        self.open_patcher = patch.object(Path, 'open')

I don't see the import for this, which means it will fail. Also, you are not actually using the Path object as-is in your tests, so this is mocked out in the wrong place. You should be mocking it out where you import the object, not where the object is declared.

    self.open_patcher = patch('openlp.plugins.bibles.lib.bibleimporter.Path.open')

>          self.addCleanup(self.open_patcher.stop)
>          self.mocked_open = self.open_patcher.start()
>          self.critical_error_message_box_patcher = \
> 
> === modified file 'tests/functional/openlp_plugins/bibles/test_wordprojectimport.py'
> --- tests/functional/openlp_plugins/bibles/test_wordprojectimport.py	2017-04-24 05:17:55 +0000
> +++ tests/functional/openlp_plugins/bibles/test_wordprojectimport.py	2017-10-11 06:59:39 +0000
> @@ -48,19 +49,17 @@
>          self.addCleanup(self.manager_patcher.stop)
>          self.manager_patcher.start()
>  
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.os')
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.copen')
> -    def test_process_books(self, mocked_open, mocked_os):
> +    @patch.object(Path, 'read_text')

Presuming that the "read_text" method is attached to either the base_path or the file_path objects, then this is correct. If it's not, you should be patching it out where you import/use it.

> +    def test_process_books(self, mocked_read_text):
>          """
>          Test the process_books() method
>          """
>          # GIVEN: A WordProject importer and a bunch of mocked things
> -        importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip')
> -        importer.base_dir = ''
> +        importer = WordProjectBible(MagicMock(), path='.', name='.', file_path=Path('kj.zip'))
> +        importer.base_path = Path()
>          importer.stop_import_flag = False
>          importer.language_id = 'en'
> -        mocked_open.return_value.__enter__.return_value.read.return_value = INDEX_PAGE
> -        mocked_os.path.join.side_effect = lambda *x: ''.join(x)
> +        mocked_read_text.return_value = INDEX_PAGE
>  
>          # WHEN: process_books() is called
>          with patch.object(importer, 'find_and_create_book') as mocked_find_and_create_book, \
> @@ -69,26 +68,22 @@
>              importer.process_books()
>  
>          # THEN: The right methods should have been called
> -        mocked_os.path.join.assert_called_once_with('', 'index.htm')
> -        mocked_open.assert_called_once_with('index.htm', encoding='utf-8', errors='ignore')
> +        mocked_read_text.assert_called_once_with(encoding='utf-8', errors='ignore')
>          assert mocked_find_and_create_book.call_count == 66, 'There should be 66 books'
>          assert mocked_process_chapters.call_count == 66, 'There should be 66 books'
>          assert mocked_session.commit.call_count == 66, 'There should be 66 books'
>  
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.os')
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.copen')
> -    def test_process_chapters(self, mocked_open, mocked_os):
> +    @patch.object(Path, 'read_text')

Same as my previous comment.

> +    def test_process_chapters(self, mocked_read_text):
>          """
>          Test the process_chapters() method
>          """
>          # GIVEN: A WordProject importer and a bunch of mocked things
> -        importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip')
> -        importer.base_dir = ''
> +        importer = WordProjectBible(MagicMock(), path='.', name='.', file_path=Path('kj.zip'))
> +        importer.base_path = Path()
>          importer.stop_import_flag = False
>          importer.language_id = 'en'
> -        mocked_open.return_value.__enter__.return_value.read.return_value = CHAPTER_PAGE
> -        mocked_os.path.join.side_effect = lambda *x: ''.join(x)
> -        mocked_os.path.normpath.side_effect = lambda x: x
> +        mocked_read_text.return_value = CHAPTER_PAGE
>          mocked_db_book = MagicMock()
>          mocked_db_book.name = 'Genesis'
>          book_id = 1
> @@ -102,24 +97,21 @@
>          # THEN: The right methods should have been called
>          expected_set_current_chapter_calls = [call('Genesis', ch) for ch in range(1, 51)]
>          expected_process_verses_calls = [call(mocked_db_book, 1, ch) for ch in range(1, 51)]
> -        mocked_os.path.join.assert_called_once_with('', '01/1.htm')
> -        mocked_open.assert_called_once_with('01/1.htm', encoding='utf-8', errors='ignore')
> +        mocked_read_text.assert_called_once_with(encoding='utf-8', errors='ignore')
>          assert mocked_set_current_chapter.call_args_list == expected_set_current_chapter_calls
>          assert mocked_process_verses.call_args_list == expected_process_verses_calls
>  
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.os')
> -    @patch('openlp.plugins.bibles.lib.importers.wordproject.copen')
> -    def test_process_verses(self, mocked_open, mocked_os):
> +    @patch.object(Path, 'read_text')

Same as my previous comment.

> +    def test_process_verses(self, mocked_read_text):
>          """
>          Test the process_verses() method
>          """
>          # GIVEN: A WordProject importer and a bunch of mocked things
> -        importer = WordProjectBible(MagicMock(), path='.', name='.', filename='kj.zip')
> -        importer.base_dir = ''
> +        importer = WordProjectBible(MagicMock(), path='.', name='.', file_path=Path('kj.zip'))
> +        importer.base_path = Path()
>          importer.stop_import_flag = False
>          importer.language_id = 'en'
> -        mocked_open.return_value.__enter__.return_value.read.return_value = CHAPTER_PAGE
> -        mocked_os.path.join.side_effect = lambda *x: '/'.join(x)
> +        mocked_read_text.return_value = CHAPTER_PAGE
>          mocked_db_book = MagicMock()
>          mocked_db_book.name = 'Genesis'
>          book_number = 1


-- 
https://code.launchpad.net/~phill-ridout/openlp/pathlib9/+merge/332092
Your team OpenLP Core is subscribed to branch lp:openlp.


References