mgw / tests /test_pymongo_operations_rw.py
alessandro trinca tornidor
test: add missing test cases
46e78fd
raw
history blame
2.8 kB
import unittest
from unittest.mock import patch, MagicMock
from my_ghost_writer import pymongo_operations_rw
class TestPymongoOperationsRW(unittest.TestCase):
@patch('my_ghost_writer.pymongo_operations_rw.pymongo_utils.get_thesaurus_collection')
def test_get_document_by_word_found(self, mock_get_collection):
mock_collection = MagicMock()
mock_collection.find_one.return_value = {"word": "example", "meaning": "test", "_id": "someid"}
mock_get_collection.return_value = mock_collection
result = pymongo_operations_rw.get_document_by_word("example")
self.assertEqual(result, {"word": "example", "meaning": "test"})
mock_collection.find_one.assert_called_with({"word": "example"})
@patch('my_ghost_writer.pymongo_operations_rw.pymongo_utils.get_thesaurus_collection')
def test_get_document_by_word_not_found(self, mock_get_collection):
mock_collection = MagicMock()
mock_collection.find_one.return_value = None
mock_get_collection.return_value = mock_collection
with self.assertRaises(AssertionError):
try:
pymongo_operations_rw.get_document_by_word("notfound")
except AssertionError as ae:
self.assertEqual(str(ae), "word 'notfound' not found in thesaurus collection")
raise ae
@patch('my_ghost_writer.pymongo_operations_rw.app_logger')
@patch('my_ghost_writer.pymongo_operations_rw.pymongo_utils.get_thesaurus_collection')
def test_insert_document_success(self, mock_get_collection, mock_logger):
mock_collection = MagicMock()
mock_result = MagicMock()
mock_result.inserted_id = "someid"
mock_collection.insert_one.return_value = mock_result
mock_get_collection.return_value = mock_collection
pymongo_operations_rw.insert_document({"word": "example"})
mock_collection.insert_one.assert_called_with({"word": "example"})
mock_logger.info.assert_called()
@patch('my_ghost_writer.pymongo_operations_rw.app_logger')
@patch('my_ghost_writer.pymongo_operations_rw.pymongo_utils.get_thesaurus_collection')
def test_insert_document_failure(self, mock_get_collection, mock_logger):
mock_collection = MagicMock()
mock_result = MagicMock()
mock_result.inserted_id = None
mock_collection.insert_one.return_value = mock_result
mock_get_collection.return_value = mock_collection
with self.assertRaises(IOError):
try:
pymongo_operations_rw.insert_document({"word": "fail"})
except IOError as e:
self.assertEqual(str(e), """failed insert of document '{"word": "fail"}'""")
raise e
if __name__ == '__main__':
unittest.main()