refactor: migrate models to canonical module locations
- Move Product/ProductTranslation to app/modules/catalog/models/ - Move VendorOnboarding to app/modules/marketplace/models/ - Delete legacy re-export files for marketplace models: - letzshop.py, marketplace.py, marketplace_product.py - marketplace_product_translation.py, marketplace_import_job.py - Delete legacy product.py, product_translation.py, onboarding.py - Update all imports across services, tasks, tests to use module locations Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,7 +8,7 @@ See tests/conftest.py for details on fixture best practices.
|
||||
|
||||
import pytest
|
||||
|
||||
from models.database.marketplace_import_job import MarketplaceImportJob
|
||||
from app.modules.marketplace.models import MarketplaceImportJob
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -13,8 +13,8 @@ import uuid
|
||||
|
||||
import pytest
|
||||
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
from app.modules.marketplace.models import (
|
||||
MarketplaceProduct,
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
|
||||
|
||||
2
tests/fixtures/vendor_fixtures.py
vendored
2
tests/fixtures/vendor_fixtures.py
vendored
@@ -12,7 +12,7 @@ import pytest
|
||||
|
||||
from models.database.company import Company
|
||||
from app.modules.inventory.models import Inventory
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
from models.database.vendor import Vendor
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ class TestAdminLetzshopVendorsAPI:
|
||||
def test_list_vendors_configured_only(self, client, db, admin_headers, test_vendor):
|
||||
"""Test listing only configured vendors."""
|
||||
from app.utils.encryption import encrypt_value
|
||||
from models.database.letzshop import VendorLetzshopCredentials
|
||||
from app.modules.marketplace.models import VendorLetzshopCredentials
|
||||
|
||||
# Configure credentials for test vendor
|
||||
credentials = VendorLetzshopCredentials(
|
||||
@@ -384,11 +384,9 @@ class TestAdminLetzshopExportAPI:
|
||||
self, client, db, admin_headers, test_vendor
|
||||
):
|
||||
"""Test exporting products with actual data."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
# Create marketplace product
|
||||
mp = MarketplaceProduct(
|
||||
@@ -438,11 +436,9 @@ class TestAdminLetzshopExportAPI:
|
||||
self, client, db, admin_headers, test_vendor
|
||||
):
|
||||
"""Test exporting products in French."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
mp = MarketplaceProduct(
|
||||
marketplace_product_id="EXPORT-FR-001",
|
||||
@@ -484,11 +480,9 @@ class TestAdminLetzshopExportAPI:
|
||||
self, client, db, admin_headers, test_vendor
|
||||
):
|
||||
"""Test exporting including inactive products."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
# Create inactive product
|
||||
mp = MarketplaceProduct(
|
||||
|
||||
@@ -67,8 +67,8 @@ class TestVendorDashboardAPI:
|
||||
"""Test that dashboard stats only show data for the authenticated vendor"""
|
||||
import uuid
|
||||
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
# Create products for the test vendor
|
||||
for i in range(3):
|
||||
@@ -195,8 +195,8 @@ class TestVendorDashboardAPI:
|
||||
"""Test dashboard stats accuracy with actual products"""
|
||||
import uuid
|
||||
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
# Create 5 different marketplace products
|
||||
marketplace_products = []
|
||||
|
||||
@@ -24,7 +24,7 @@ class TestVendorInventoryAPI:
|
||||
):
|
||||
"""Test setting inventory for a product."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -56,7 +56,7 @@ class TestVendorInventoryAPI:
|
||||
db,
|
||||
):
|
||||
"""Test adjusting inventory quantity."""
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -123,7 +123,7 @@ class TestVendorInventoryAPI:
|
||||
db,
|
||||
):
|
||||
"""Test getting inventory for a specific product."""
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -155,7 +155,7 @@ class TestVendorInventoryAPI:
|
||||
db,
|
||||
):
|
||||
"""Test reserving inventory for an order."""
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -198,7 +198,7 @@ class TestVendorInventoryAPI:
|
||||
db,
|
||||
):
|
||||
"""Test updating inventory record."""
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -240,7 +240,7 @@ class TestVendorInventoryAPI:
|
||||
db,
|
||||
):
|
||||
"""Test deleting inventory record."""
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
|
||||
32
tests/integration/api/v1/vendor/test_letzshop.py
vendored
32
tests/integration/api/v1/vendor/test_letzshop.py
vendored
@@ -642,11 +642,9 @@ class TestVendorLetzshopExportAPI:
|
||||
self, client, db, vendor_user_headers, test_vendor_with_vendor_user
|
||||
):
|
||||
"""Test exporting products with actual data."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
# Create marketplace product
|
||||
mp = MarketplaceProduct(
|
||||
@@ -695,11 +693,9 @@ class TestVendorLetzshopExportAPI:
|
||||
self, client, db, vendor_user_headers, test_vendor_with_vendor_user
|
||||
):
|
||||
"""Test exporting products in French."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
mp = MarketplaceProduct(
|
||||
marketplace_product_id="VENDOR-FR-001",
|
||||
@@ -741,11 +737,9 @@ class TestVendorLetzshopExportAPI:
|
||||
self, client, db, vendor_user_headers, test_vendor_with_vendor_user
|
||||
):
|
||||
"""Test exporting products in German."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
mp = MarketplaceProduct(
|
||||
marketplace_product_id="VENDOR-DE-001",
|
||||
@@ -785,11 +779,9 @@ class TestVendorLetzshopExportAPI:
|
||||
self, client, db, vendor_user_headers, test_vendor_with_vendor_user
|
||||
):
|
||||
"""Test exporting including inactive products."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
mp = MarketplaceProduct(
|
||||
marketplace_product_id="VENDOR-INACTIVE-001",
|
||||
|
||||
@@ -14,7 +14,7 @@ Tests cover:
|
||||
|
||||
import pytest
|
||||
|
||||
from models.database.onboarding import OnboardingStatus, OnboardingStep, VendorOnboarding
|
||||
from app.modules.marketplace.models import OnboardingStatus, OnboardingStep, VendorOnboarding
|
||||
|
||||
|
||||
@pytest.mark.integration
|
||||
|
||||
12
tests/integration/api/v1/vendor/test_products.py
vendored
12
tests/integration/api/v1/vendor/test_products.py
vendored
@@ -50,7 +50,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test adding product that already exists returns error."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -140,7 +140,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test getting product details."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -174,7 +174,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test updating product details."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -206,7 +206,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test toggling product active status."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -232,7 +232,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test toggling product featured status."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
@@ -258,7 +258,7 @@ class TestVendorProductsAPI:
|
||||
):
|
||||
"""Test removing product from catalog."""
|
||||
# Ensure test_product belongs to the vendor
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
product.vendor_id = test_vendor_with_vendor_user.id
|
||||
|
||||
@@ -4,7 +4,7 @@ from unittest.mock import AsyncMock, MagicMock, patch
|
||||
import pytest
|
||||
|
||||
from app.tasks.background_tasks import process_marketplace_import
|
||||
from models.database.marketplace_import_job import MarketplaceImportJob
|
||||
from app.modules.marketplace.models import MarketplaceImportJob
|
||||
|
||||
|
||||
@pytest.mark.integration
|
||||
|
||||
@@ -8,7 +8,7 @@ import pytest
|
||||
|
||||
from app.services.letzshop import LetzshopClientError
|
||||
from app.tasks.letzshop_tasks import process_historical_import
|
||||
from models.database.letzshop import LetzshopHistoricalImportJob
|
||||
from app.modules.marketplace.models import LetzshopHistoricalImportJob
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -9,8 +9,8 @@ import time
|
||||
|
||||
import pytest
|
||||
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
from app.modules.marketplace.models import (
|
||||
MarketplaceProduct,
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import pytest
|
||||
|
||||
from models.database.marketplace_import_job import MarketplaceImportJob
|
||||
from app.modules.marketplace.models import MarketplaceImportJob
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
import pytest
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
from app.modules.marketplace.models import (
|
||||
MarketplaceProduct,
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import pytest
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
@@ -363,11 +363,9 @@ class TestInventoryService:
|
||||
def test_get_product_inventory_no_inventory(self, db, test_product, test_vendor):
|
||||
"""Test getting inventory for product with no inventory entries."""
|
||||
# Create a new product without inventory
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.database.product import Product
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProductTranslation
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
unique_id = str(uuid.uuid4())[:8]
|
||||
mp = MarketplaceProduct(
|
||||
|
||||
@@ -26,8 +26,8 @@ from app.services.marketplace_product_service import (
|
||||
MarketplaceProductService,
|
||||
marketplace_product_service,
|
||||
)
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
from app.modules.marketplace.models import (
|
||||
MarketplaceProduct,
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
from models.schema.marketplace_product import (
|
||||
|
||||
@@ -12,7 +12,7 @@ from app.exceptions.marketplace_import_job import (
|
||||
)
|
||||
from app.exceptions.vendor import UnauthorizedVendorAccessException
|
||||
from app.services.marketplace_import_job_service import MarketplaceImportJobService
|
||||
from models.database.marketplace_import_job import MarketplaceImportJob
|
||||
from app.modules.marketplace.models import MarketplaceImportJob
|
||||
from models.schema.marketplace_import_job import MarketplaceImportJobRequest
|
||||
|
||||
|
||||
@@ -283,7 +283,7 @@ class TestMarketplaceImportJobService:
|
||||
self, db, test_marketplace_import_job, test_vendor
|
||||
):
|
||||
"""Test converting database model to response model."""
|
||||
from models.database.marketplace_import_job import MarketplaceImportJob as MIJ
|
||||
from app.modules.marketplace.models import MarketplaceImportJob as MIJ
|
||||
|
||||
# Re-query to get fresh instance with relationships
|
||||
job = db.query(MIJ).filter(MIJ.id == test_marketplace_import_job.id).first()
|
||||
|
||||
@@ -16,7 +16,7 @@ from unittest.mock import MagicMock, patch
|
||||
import pytest
|
||||
|
||||
from app.services.onboarding_service import OnboardingService
|
||||
from models.database.onboarding import OnboardingStatus, OnboardingStep, VendorOnboarding
|
||||
from app.modules.marketplace.models import OnboardingStatus, OnboardingStep, VendorOnboarding
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
@@ -10,8 +10,8 @@ from sqlalchemy.exc import SQLAlchemyError
|
||||
from app.exceptions import AdminOperationException, VendorNotFoundException
|
||||
from app.services.stats_service import StatsService
|
||||
from app.modules.inventory.models import Inventory
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from models.database.marketplace_product_translation import (
|
||||
from app.modules.marketplace.models import (
|
||||
MarketplaceProduct,
|
||||
MarketplaceProductTranslation,
|
||||
)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import pytest
|
||||
|
||||
from app.services.usage_service import UsageService, usage_service
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
from models.database.subscription import SubscriptionTier, VendorSubscription
|
||||
from models.database.vendor import VendorUser
|
||||
|
||||
|
||||
@@ -358,7 +358,7 @@ class TestVendorService:
|
||||
|
||||
def test_add_product_to_vendor_success(self, db, test_vendor, unique_product):
|
||||
"""Test successfully adding product to vendor."""
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
|
||||
# Re-query objects to avoid session issues
|
||||
vendor = db.query(Vendor).filter(Vendor.id == test_vendor.id).first()
|
||||
@@ -398,7 +398,7 @@ class TestVendorService:
|
||||
def test_add_product_to_vendor_already_exists(self, db, test_vendor, test_product):
|
||||
"""Test adding product that's already in vendor fails."""
|
||||
# Re-query to get fresh instances
|
||||
from models.database.product import Product
|
||||
from app.modules.catalog.models import Product
|
||||
|
||||
vendor = db.query(Vendor).filter(Vendor.id == test_vendor.id).first()
|
||||
product = db.query(Product).filter(Product.id == test_product.id).first()
|
||||
|
||||
@@ -9,7 +9,7 @@ import requests
|
||||
import requests.exceptions
|
||||
|
||||
from app.utils.csv_processor import CSVProcessor
|
||||
from models.database.marketplace_product import MarketplaceProduct
|
||||
from app.modules.marketplace.models import MarketplaceProduct
|
||||
|
||||
|
||||
@pytest.mark.unit
|
||||
|
||||
Reference in New Issue
Block a user