Files
cmshoppe/tests/test_product_suite.py
T

107 lines
4.1 KiB
Python
Raw Normal View History

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_recent_settings_only_keep_allowed_dropdown_values(self):
self.assertEqual(
{
"platform": "Shopee",
"country": "中国台湾",
"language": "繁体中文",
"ratio": "1:1",
},
product_suite.last_suite_settings(
{
"platform": "未知平台",
"country": "未知站点",
"language": "未知语言",
"ratio": "2:3",
"per_image_primary": True,
"categories": {"白底图": 9},
}
),
)
selected = product_suite.last_suite_settings(
{
"platform": "Amazon",
"country": "新加坡",
"language": "英文",
"ratio": "4:3",
}
)
self.assertEqual("Amazon", selected["platform"])
self.assertEqual("新加坡", selected["country"])
self.assertEqual("英文", selected["language"])
self.assertEqual("4:3", selected["ratio"])
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()