75 lines
3.0 KiB
Python
75 lines
3.0 KiB
Python
import os
|
||||
|
|
import sys
|
|||
|
|
import unittest
|
|||
|
|
from types import SimpleNamespace
|
|||
|
|
|
|||
|
|
sys.path.insert(0, os.path.dirname(__file__))
|
|||
|
|
|
|||
|
|
from app import product_suite
|
|||
|
|
|
|||
|
|
|
|||
|
|
class ProductSuiteTests(unittest.TestCase):
|
|||
|
|
def test_defaults_and_per_image_total(self):
|
|||
|
|
settings = product_suite.default_suite_settings()
|
|||
|
|
|
|||
|
|
self.assertEqual(["白底图", "场景图", "卖点图"], product_suite.category_order(settings))
|
|||
|
|
self.assertEqual(5, product_suite.suite_total_count(settings, 3))
|
|||
|
|
|
|||
|
|
settings["per_image_primary"] = True
|
|||
|
|
|
|||
|
|
self.assertEqual(13, product_suite.suite_total_count(settings, 3))
|
|||
|
|
|
|||
|
|
def test_custom_category_validation_and_normalization(self):
|
|||
|
|
self.assertEqual("分类名称不能为空", product_suite.suite_name_error(""))
|
|||
|
|
self.assertEqual("分类名称不能包含空格", product_suite.suite_name_error("使用 场景"))
|
|||
|
|
self.assertEqual("分类名称不能超过10个字", product_suite.suite_name_error("一二三四五六七八九十甲"))
|
|||
|
|
self.assertEqual("分类名称已存在", product_suite.suite_name_error("场景图", {"场景图"}))
|
|||
|
|
|
|||
|
|
settings = product_suite.normalize_suite_settings(
|
|||
|
|
{
|
|||
|
|
"ratio": "3:4",
|
|||
|
|
"categories": {"白底图": 2, "场景图": 0, "卖点图": 1, "尺寸图": 2},
|
|||
|
|
"custom_category_order": ["尺寸图"],
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
self.assertEqual("3:4", settings["ratio"])
|
|||
|
|
self.assertEqual(["白底图", "场景图", "卖点图", "尺寸图"], product_suite.category_order(settings))
|
|||
|
|
self.assertEqual(5, product_suite.suite_total_count(settings, 1))
|
|||
|
|
|
|||
|
|
def test_job_specs_include_selected_context_and_source_assignment(self):
|
|||
|
|
settings = product_suite.default_suite_settings()
|
|||
|
|
settings.update(
|
|||
|
|
{
|
|||
|
|
"platform": "Shopee",
|
|||
|
|
"country": "中国台湾",
|
|||
|
|
"language": "繁体中文",
|
|||
|
|
"ratio": "4:3",
|
|||
|
|
"per_image_primary": True,
|
|||
|
|
"categories": {"白底图": 1, "场景图": 1, "卖点图": 0},
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
assets = [SimpleNamespace(id=11), SimpleNamespace(id=12)]
|
|||
|
|
|
|||
|
|
specs = product_suite.build_job_specs(
|
|||
|
|
assets,
|
|||
|
|
"40小时续航,适合通勤",
|
|||
|
|
settings,
|
|||
|
|
"51100639510",
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
self.assertEqual(3, len(specs))
|
|||
|
|
self.assertEqual([11, 11, 12], [spec["source_asset_id"] for spec in specs])
|
|||
|
|
self.assertEqual(["白底图", "场景图", "场景图"], [spec["job_type"] for spec in specs])
|
|||
|
|
for spec in specs:
|
|||
|
|
self.assertIn("平台:Shopee", spec["prompt"])
|
|||
|
|
self.assertIn("国家地区:中国台湾", spec["prompt"])
|
|||
|
|
self.assertIn("输出语言:繁体中文", spec["prompt"])
|
|||
|
|
self.assertIn("图片比例:4:3", spec["prompt"])
|
|||
|
|
self.assertIn("商品ID:51100639510", spec["prompt"])
|
|||
|
|
self.assertIn("40小时续航", spec["prompt"])
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
unittest.main()
|