feat: refactor: add db add assert to unit test for original save_document_with_dataset_id

pull/21528/head
neatguycoding 11 months ago
parent 92bc10de96
commit c3c776d41c

@ -3,6 +3,7 @@ from unittest.mock import Mock, patch
import pytest import pytest
from models import DatasetProcessRule
from models.account import Account from models.account import Account
from models.dataset import Dataset, Document from models.dataset import Dataset, Document
from services.dataset_service import DocumentService from services.dataset_service import DocumentService
@ -19,6 +20,7 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
- Duplicate document handling - Duplicate document handling
- Process rule validation and error cases - Process rule validation and error cases
- Exception handling and edge cases - Exception handling and edge cases
- Database session operations (add and flush)
""" """
def setUp(self): def setUp(self):
@ -191,6 +193,10 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
mock_doc_task.assert_called_once() mock_doc_task.assert_called_once()
mock_dup_task.assert_not_called() mock_dup_task.assert_not_called()
# Verify the documents were added to session
mock_db.add.assert_any_call(mock_doc1)
mock_db.add.assert_any_call(mock_doc2)
@patch("services.dataset_service.FeatureService.get_features") @patch("services.dataset_service.FeatureService.get_features")
@patch("services.dataset_service.current_user") @patch("services.dataset_service.current_user")
def test_billing_batch_limit_exceeded(self, mock_current_user, mock_features): def test_billing_batch_limit_exceeded(self, mock_current_user, mock_features):
@ -440,7 +446,8 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
upload_file.id = "file1" upload_file.id = "file1"
upload_file.name = "file1.pdf" upload_file.name = "file1.pdf"
existing_doc = Mock(id="docid", name="file1.pdf") existing_doc = Mock(id="docid", name="file1.pdf")
mock_db.query.return_value.filter.return_value.first.side_effect = [upload_file, existing_doc] mock_db.query.return_value.filter.return_value.first.return_value = upload_file
mock_db.query.return_value.filter_by.return_value.first.return_value = existing_doc
# Mock time # Mock time
mock_time.strftime.return_value = "20231201120000" mock_time.strftime.return_value = "20231201120000"
@ -452,6 +459,17 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
assert len(docs) == 1 assert len(docs) == 1
mock_dup_task.assert_called_once() mock_dup_task.assert_called_once()
# Verify the existing document was added to session with updated properties
mock_db.add.assert_any_call(existing_doc)
# Verify the document properties were updated before being added
# These assertions verify that the duplicate document was properly updated
assert existing_doc.batch == "20231201120000223456"
assert existing_doc.indexing_status == "waiting"
assert existing_doc.created_from == "web"
assert existing_doc.doc_form == "pdf"
assert existing_doc.doc_language == "en"
@patch("services.dataset_service.db.session") @patch("services.dataset_service.db.session")
@patch("services.dataset_service.redis_client") @patch("services.dataset_service.redis_client")
@patch("services.dataset_service.FeatureService.get_features") @patch("services.dataset_service.FeatureService.get_features")
@ -561,6 +579,9 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
assert len(docs) == 1 assert len(docs) == 1
mock_doc_task.assert_called_once() mock_doc_task.assert_called_once()
# Verify the document was added to the database session
mock_db.add.assert_called_with(mock_doc)
@patch("services.dataset_service.db.session") @patch("services.dataset_service.db.session")
@patch("services.dataset_service.redis_client") @patch("services.dataset_service.redis_client")
@patch("services.dataset_service.FeatureService.get_features") @patch("services.dataset_service.FeatureService.get_features")
@ -608,7 +629,10 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
# Assert # Assert
assert len(docs) == 0 assert len(docs) == 0
mock_clean_task.assert_not_called() # No document should be created since it already exists
for call in mock_db.add.call_args_list:
args, kwargs = call
assert not any(isinstance(arg, Document) for arg in args), "Method was called with a Document!"
@patch("services.dataset_service.db.session") @patch("services.dataset_service.db.session")
@patch("services.dataset_service.redis_client") @patch("services.dataset_service.redis_client")
@ -644,6 +668,10 @@ class TestDocumentServiceSaveDocumentWithDatasetId(unittest.TestCase):
assert mock_build_doc.call_count == 2 assert mock_build_doc.call_count == 2
mock_doc_task.assert_called_once() mock_doc_task.assert_called_once()
# Verify database session operations
mock_db.add.assert_any_call(mock_doc1)
mock_db.add.assert_any_call(mock_doc2)
@patch("services.dataset_service.db.session") @patch("services.dataset_service.db.session")
@patch("services.dataset_service.redis_client") @patch("services.dataset_service.redis_client")
@patch("services.dataset_service.FeatureService.get_features") @patch("services.dataset_service.FeatureService.get_features")

Loading…
Cancel
Save