| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- """resolve_crm_product:运输联动场景允许已下架产品。"""
- from __future__ import annotations
- from types import SimpleNamespace
- from unittest.mock import MagicMock, patch
- import pytest
- from fastapi import HTTPException
- from app.services.db.product_helpers import resolve_crm_product
- def _product(**kwargs):
- base = dict(
- id="p1",
- tenant_no="shanxia2.0",
- product_name="98% 工业硫酸",
- model="98%",
- status="off",
- )
- base.update(kwargs)
- return SimpleNamespace(**base)
- def test_resolve_rejects_off_shelf_by_default():
- db = MagicMock()
- with patch("app.services.db.product_helpers.get_product", return_value=_product()):
- with pytest.raises(HTTPException) as exc:
- resolve_crm_product(db, "shanxia2.0", "p1")
- assert exc.value.status_code == 400
- assert "下架" in str(exc.value.detail)
- def test_resolve_allows_off_shelf_when_not_required():
- db = MagicMock()
- with patch("app.services.db.product_helpers.get_product", return_value=_product()):
- snap = resolve_crm_product(db, "shanxia2.0", "p1", require_on_shelf=False)
- assert snap.product_id == "p1"
- assert snap.product_name == "98% 工业硫酸"
- assert snap.specification == "98%"
|