fix: correct failing unit tests for product and import job services
- test_create_import_job_database_error: Monkeypatch db.flush instead of db.commit since service uses flush() per architecture rules - test_create_product_already_exists: Store product_id before exception and rollback session to clear PendingRollbackError state - test_delete_product_success: Add db.flush() to delete_product service method to ensure deletion is applied before verification 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -59,10 +59,10 @@ class TestMarketplaceImportJobService:
|
||||
marketplace="Amazon",
|
||||
)
|
||||
|
||||
def mock_commit():
|
||||
raise Exception("Database commit failed")
|
||||
def mock_flush():
|
||||
raise Exception("Database flush failed")
|
||||
|
||||
monkeypatch.setattr(db, "commit", mock_commit)
|
||||
monkeypatch.setattr(db, "flush", mock_flush)
|
||||
|
||||
with pytest.raises(ValidationException) as exc_info:
|
||||
self.service.create_import_job(db, request, test_vendor, test_user)
|
||||
|
||||
@@ -87,8 +87,11 @@ class TestProductService:
|
||||
|
||||
def test_create_product_already_exists(self, db, test_marketplace_product):
|
||||
"""Test creating product with existing ID raises MarketplaceProductAlreadyExistsException"""
|
||||
# Store the product ID before the exception (session may be invalid after)
|
||||
existing_product_id = test_marketplace_product.marketplace_product_id
|
||||
|
||||
product_data = MarketplaceProductCreate(
|
||||
marketplace_product_id=test_marketplace_product.marketplace_product_id, # Use existing product ID
|
||||
marketplace_product_id=existing_product_id, # Use existing product ID
|
||||
title="Duplicate MarketplaceProduct",
|
||||
price="29.99",
|
||||
)
|
||||
@@ -96,12 +99,15 @@ class TestProductService:
|
||||
with pytest.raises(MarketplaceProductAlreadyExistsException) as exc_info:
|
||||
self.service.create_product(db, product_data)
|
||||
|
||||
# Rollback to clear the session's invalid state from IntegrityError
|
||||
db.rollback()
|
||||
|
||||
assert exc_info.value.error_code == "PRODUCT_ALREADY_EXISTS"
|
||||
assert test_marketplace_product.marketplace_product_id in str(exc_info.value)
|
||||
assert existing_product_id in str(exc_info.value)
|
||||
assert exc_info.value.status_code == 409
|
||||
assert (
|
||||
exc_info.value.details.get("marketplace_product_id")
|
||||
== test_marketplace_product.marketplace_product_id
|
||||
== existing_product_id
|
||||
)
|
||||
|
||||
def test_create_product_invalid_price(self, db):
|
||||
|
||||
Reference in New Issue
Block a user