diff --git a/tests/functional/openlp_core_lib/test_lib.py b/tests/functional/openlp_core_lib/test_lib.py index 2edc9d462..7b3d64fd2 100644 --- a/tests/functional/openlp_core_lib/test_lib.py +++ b/tests/functional/openlp_core_lib/test_lib.py @@ -3,9 +3,9 @@ Package to test the openlp.core.lib package. """ from unittest import TestCase -from mock import MagicMock, patch +from mock import MagicMock, patch, call -from openlp.core.lib import str_to_bool, translate, check_directory_exists +from openlp.core.lib import str_to_bool, translate, check_directory_exists, get_text_file_string class TestLib(TestCase): @@ -156,3 +156,44 @@ class TestLib(TestCase): # THEN: check_directory_exists raises an exception mocked_exists.assert_called_with(directory_to_check) self.assertRaises(ValueError, check_directory_exists, directory_to_check) + + def get_text_file_string_no_file_test(self): + """ + Test the get_text_file_string() function when a file does not exist + """ + with patch(u'openlp.core.lib.os.path.isfile') as mocked_isfile: + # GIVEN: A mocked out isfile which returns true, and a text file name + filename = u'testfile.txt' + mocked_isfile.return_value = False + + # WHEN: get_text_file_string is called + result = get_text_file_string(filename) + + # THEN: The result should be False + mocked_isfile.assert_called_with(filename) + assert result is False, u'False should be returned if no file exists' + + def get_text_file_string_read_error_test(self): + """ + Test the get_text_file_string() method when a read error happens + """ + with patch(u'openlp.core.lib.os.path.isfile') as mocked_isfile, patch(u'__builtin__.open') as mocked_open: + # GIVEN: A mocked-out open() which raises an exception and isfile returns True + filename = u'testfile.txt' + mocked_isfile.return_value = True + mocked_open.side_effect = IOError() + + # WHEN: get_text_file_string is called + result = get_text_file_string(filename) + + # THEN: None should be returned + mocked_isfile.assert_called_with(filename) + mocked_open.assert_called_with(filename, u'r') + assert result is None, u'None should be returned if the file cannot be opened' + + def get_text_file_string_decode_error_test(self): + """ + Test the get_text_file_string() method when the contents cannot be decoded + """ + assert True, u'Impossible to test due to conflicts when mocking out the "open" function' + diff --git a/tests/functional/openlp_core_utils/test_applocation.py b/tests/functional/openlp_core_utils/test_applocation.py index 2d3c83e5a..38cc57d70 100644 --- a/tests/functional/openlp_core_utils/test_applocation.py +++ b/tests/functional/openlp_core_utils/test_applocation.py @@ -48,8 +48,7 @@ class TestAppLocation(TestCase): data_path = AppLocation.get_data_path() # THEN: the mocked Settings methods were called and the value returned was our set up value mocked_settings.contains.assert_called_with(u'advanced/data path') - mocked_settings.value.assert_called_with(u'advanced/data path') - mocked_settings.value.return_value.toString.assert_called_with() + mocked_settings.value.assert_called_with(u'advanced/data path', u'') assert data_path == u'custom/dir', u'Result should be "custom/dir"' def get_section_data_path_test(self):