forked from erp-dev/erp
feat: tencent tiia upload image support
This commit is contained in:
54
api_v1/test_tencentcloud_tiia_plate_order_upload.py
Normal file
54
api_v1/test_tencentcloud_tiia_plate_order_upload.py
Normal file
@@ -0,0 +1,54 @@
|
||||
from unittest.mock import patch
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from basic_info import models as basic_models
|
||||
from printing import models as printing_models
|
||||
|
||||
|
||||
class TencentTiiaPlateOrderUploadTestCase(TestCase):
|
||||
def setUp(self):
|
||||
self.merchant = basic_models.Merchant.objects.create(
|
||||
name='测试商户',
|
||||
type=basic_models.MerchantTypeEnum.FACTORY,
|
||||
)
|
||||
# PlateOrder.customer 必填
|
||||
self.customer = basic_models.Customer.objects.create(
|
||||
merchant=self.merchant,
|
||||
name='客户A',
|
||||
mobile='13900000000',
|
||||
area='A',
|
||||
)
|
||||
|
||||
@patch('api_v1.utils.tencentcloud_tiia.upload_image_url_to_tencent_tiia')
|
||||
def test_upload_plate_order_images_to_tencent_tiia_uploads_all_urls(self, mocked_upload):
|
||||
mocked_upload.side_effect = lambda **kwargs: {'mocked': True, 'kwargs': kwargs}
|
||||
|
||||
po = printing_models.PlateOrder.objects.create(
|
||||
merchant=self.merchant,
|
||||
customer=self.customer,
|
||||
plate_image=[
|
||||
{'url': 'https://example.com/a.png'},
|
||||
{'path': 'uploads/2026/01/16/b.png'}, # 将由 build_public_media_url 归一化
|
||||
'https://example.com/c.png',
|
||||
{'imageUrl': 'https://example.com/d.png'},
|
||||
],
|
||||
)
|
||||
|
||||
from api_v1.utils.tencentcloud_tiia import upload_plate_order_images_to_tencent_tiia
|
||||
|
||||
results = upload_plate_order_images_to_tencent_tiia(plate_order_id=po.id)
|
||||
|
||||
# 至少应尝试上传 3 张绝对 URL(example.com: a/c/d)
|
||||
# uploads/... 会被转为基于 settings.QINIU_BUCKET_DOMAIN 的绝对/相对形式,这里不强耦合其结果,
|
||||
# 只要 uploader 被调用次数 >= 3 即可。
|
||||
self.assertGreaterEqual(mocked_upload.call_count, 3)
|
||||
|
||||
# entity_id 必须为 plate_order_id
|
||||
for call in mocked_upload.call_args_list:
|
||||
self.assertEqual(call.kwargs.get('entity_id'), str(po.id))
|
||||
|
||||
# 返回结构必须包含 ok/image_url 字段
|
||||
self.assertIsInstance(results, list)
|
||||
self.assertTrue(all(('ok' in r and 'image_url' in r) for r in results))
|
||||
|
||||
Reference in New Issue
Block a user