Files
orion/tests/integration/workflows/test_integration.py
Samir Boulahtit 238c1ec9b8 refactor: modernize code quality tooling with Ruff
- Replace black, isort, and flake8 with Ruff (all-in-one linter and formatter)
- Add comprehensive pyproject.toml configuration
- Simplify Makefile code quality targets
- Configure exclusions for venv/.venv in pyproject.toml
- Auto-fix 1,359 linting issues across codebase

Benefits:
- Much faster builds (Ruff is written in Rust)
- Single tool replaces multiple tools
- More comprehensive rule set (UP, B, C4, SIM, PIE, RET, Q)
- All configuration centralized in pyproject.toml
- Better import sorting and formatting consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 19:37:38 +01:00

138 lines
4.6 KiB
Python

# tests/test_integration.py
import pytest
@pytest.mark.integration
@pytest.mark.api
@pytest.mark.e2e
class TestIntegrationFlows:
def test_full_product_workflow(self, client, auth_headers):
"""Test complete product creation and management workflow"""
# 1. Create a product
product_data = {
"marketplace_product_id": "FLOW001",
"title": "Integration Test MarketplaceProduct",
"description": "Testing full workflow",
"price": "29.99",
"brand": "FlowBrand",
"gtin": "1111222233334",
"availability": "in inventory",
"marketplace": "TestFlow",
}
response = client.post(
"/api/v1/marketplace/product", headers=auth_headers, json=product_data
)
assert response.status_code == 200
product = response.json()
# 2. Add inventory for the product
inventory_data = {
"gtin": product["gtin"],
"location": "MAIN_WAREHOUSE",
"quantity": 50,
}
response = client.post(
"/api/v1/inventory", headers=auth_headers, json=inventory_data
)
assert response.status_code == 200
# 3. Get product with inventory info
response = client.get(
f"/api/v1/marketplace/product/{product['marketplace_product_id']}",
headers=auth_headers,
)
assert response.status_code == 200
product_detail = response.json()
assert product_detail["inventory_info"]["total_quantity"] == 50
# 4. Update product
update_data = {"title": "Updated Integration Test MarketplaceProduct"}
response = client.put(
f"/api/v1/marketplace/product/{product['marketplace_product_id']}",
headers=auth_headers,
json=update_data,
)
assert response.status_code == 200
# 5. Search for product
response = client.get(
"/api/v1/marketplace/product?search=Updated Integration",
headers=auth_headers,
)
assert response.status_code == 200
assert response.json()["total"] == 1
def test_product_workflow(self, client, auth_headers):
"""Test vendor creation and product management workflow"""
# 1. Create a vendor
vendor_data = {
"vendor_code": "FLOWVENDOR",
"name": "Integration Flow Vendor",
"description": "Test vendor for integration",
}
response = client.post("/api/v1/vendor", headers=auth_headers, json=vendor_data)
assert response.status_code == 200
vendor = response.json()
# 2. Create a product
product_data = {
"marketplace_product_id": "VENDORFLOW001",
"title": "Vendor Flow MarketplaceProduct",
"price": "15.99",
"marketplace": "VendorFlow",
}
response = client.post(
"/api/v1/marketplace/product", headers=auth_headers, json=product_data
)
assert response.status_code == 200
product = response.json()
# 3. Add product to vendor (if endpoint exists)
# This would test the vendor -product association
# 4. Get vendor details
response = client.get(
f"/api/v1/vendor/{vendor['vendor_code']}", headers=auth_headers
)
assert response.status_code == 200
def test_inventory_operations_workflow(self, client, auth_headers):
"""Test complete inventory management workflow"""
gtin = "9999888877776"
location = "TEST_WAREHOUSE"
# 1. Set initial inventory
response = client.post(
"/api/v1/inventory",
headers=auth_headers,
json={"gtin": gtin, "location": location, "quantity": 100},
)
assert response.status_code == 200
# 2. Add more inventory
response = client.post(
"/api/v1/inventory/add",
headers=auth_headers,
json={"gtin": gtin, "location": location, "quantity": 25},
)
assert response.status_code == 200
assert response.json()["quantity"] == 125
# 3. Remove some inventory
response = client.post(
"/api/v1/inventory/remove",
headers=auth_headers,
json={"gtin": gtin, "location": location, "quantity": 30},
)
assert response.status_code == 200
assert response.json()["quantity"] == 95
# 4. Check total inventory
response = client.get(f"/api/v1/inventory/{gtin}/total", headers=auth_headers)
assert response.status_code == 200
assert response.json()["total_quantity"] == 95