def test_close_offload_file(self): logger = Logger() mock_file = MagicMock() logger._offload_file = mock_file logger.close_offload_file() mock_file.close.assert_called()
def test_add_issue(self, mock_write_issue, mock_open_offload_file, mock_issue): logger = Logger() any_issue = MagicMock() any_issue.json = '{"issue": 1}' any_issue.get_unique_id.return_value = 1 mock_byte_position = 1024 mock_write_issue.return_value = mock_byte_position logger.add_issue(any_issue, 'error') # Assert issue offload file is opened mock_open_offload_file.assert_called() # Assert issue is written to file and data count has been updated mock_write_issue.assert_called_with(any_issue) self.assertEqual(1, logger._data_msg_count['data_error']) self.assertEqual(logger._issues, {1: 1024}) mocked_issue = MagicMock() mock_issue.from_json.return_value = mocked_issue mock_offload_file = MagicMock() logger._offload_file = mock_offload_file # Add the same issue again to make sure it is joined logger.add_issue(any_issue, 'error') mock_offload_file.seek.assert_has_calls([call(1024), call(0,2)]) mock_offload_file.readline.assert_called() mocked_issue.join_issue.assert_called_with(any_issue) mock_write_issue.assert_called_with(mocked_issue) # Still one data error self.assertEqual(1, logger._data_msg_count['data_error']) logger = Logger() any_issue.get_unique_id.return_value = 1 another_issue = MagicMock() another_issue.get_unique_id.return_value = 1 logger.add_issue(any_issue, 'info') self.assertEqual(1, logger._data_msg_count['data_info']) another_issue.get_unique_id.return_value = 2 logger.add_issue(another_issue, 'error') self.assertEqual(1, logger._data_msg_count['data_error']) logger = Logger() logger.add_issue(any_issue, 'info') self.assertEqual(1, logger._data_msg_count['data_info'])
def test_clear_issues(self, mock_os): logger = Logger() logger._issues = {'1': 1} logger._data_msg_count = {'any': 'value'} logger._offload_file = 'any file' logger._offload_filename = 'any filename' # Assert all variables have been cleared logger.clear_issues() self.assertEqual(logger._issues, {}) self.assertEqual(logger._offload_file, None) mock_os.remove.assert_called_with('any filename') # Check an OSError is passed without error mock_os.remove.side_effect = OSError() logger._offload_filename = 'any non existing filename' logger.clear_issues()
def test_write_issue(self): logger = Logger() mock_issue = MagicMock() mock_issue.json = 'any json' mock_file = MagicMock() mock_file.tell.return_value = 'any byte offset' logger._offload_file = mock_file result = logger.write_issue(mock_issue) mock_file.tell.assert_called() mock_file.write.assert_called_with('any json\n') self.assertEqual(result, 'any byte offset')