refactor: move letzshop endpoints to marketplace module and add vendor service tests

Move letzshop-related functionality from tenancy to marketplace module:
- Move admin letzshop routes to marketplace/routes/api/admin_letzshop.py
- Move letzshop schemas to marketplace/schemas/letzshop.py
- Remove letzshop code from tenancy module (admin_vendors, vendor_service)
- Update model exports and imports

Add comprehensive unit tests for vendor services:
- test_company_service.py: Company management operations
- test_platform_service.py: Platform management operations
- test_vendor_domain_service.py: Vendor domain operations
- test_vendor_team_service.py: Vendor team management

Update module definitions:
- billing, messaging, payments: Minor definition updates

Add architecture proposals documentation:
- Module dependency redesign session notes
- Decouple modules implementation plan
- Module decoupling proposal

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-04 19:25:00 +01:00
parent 37942ae02b
commit 0583dd2cc4
29 changed files with 3643 additions and 650 deletions

View File

@@ -370,7 +370,7 @@ class TestAdminLetzshopExportAPI:
def test_export_vendor_products_empty(self, client, admin_headers, test_vendor):
"""Test exporting products when vendor has no products."""
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.id}/export/letzshop",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export",
headers=admin_headers,
)
@@ -422,7 +422,7 @@ class TestAdminLetzshopExportAPI:
db.commit()
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.id}/export/letzshop",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export",
headers=admin_headers,
)
@@ -468,7 +468,7 @@ class TestAdminLetzshopExportAPI:
db.commit()
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.id}/export/letzshop?language=fr",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export?language=fr",
headers=admin_headers,
)
@@ -512,24 +512,24 @@ class TestAdminLetzshopExportAPI:
# Without include_inactive
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.id}/export/letzshop",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export",
headers=admin_headers,
)
assert "INACTIVE-001" not in response.text
# With include_inactive
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.id}/export/letzshop?include_inactive=true",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export?include_inactive=true",
headers=admin_headers,
)
assert "INACTIVE-001" in response.text
def test_export_vendor_products_by_vendor_code(
def test_export_vendor_products_by_vendor_id(
self, client, admin_headers, test_vendor
):
"""Test exporting products using vendor_code identifier."""
"""Test exporting products using vendor ID."""
response = client.get(
f"/api/v1/admin/vendors/{test_vendor.vendor_code}/export/letzshop",
f"/api/v1/admin/letzshop/vendors/{test_vendor.id}/export",
headers=admin_headers,
)
@@ -539,7 +539,7 @@ class TestAdminLetzshopExportAPI:
def test_export_vendor_not_found(self, client, admin_headers):
"""Test exporting for non-existent vendor."""
response = client.get(
"/api/v1/admin/vendors/999999/export/letzshop",
"/api/v1/admin/letzshop/vendors/999999/export",
headers=admin_headers,
)