103 lines
2.9 KiB
Python
103 lines
2.9 KiB
Python
from gyxx_flow.migration.sync_feishu_style_identity import (
|
|
StyleIdentity,
|
|
_merge_target_row,
|
|
build_sync_plan,
|
|
)
|
|
|
|
|
|
def _row(record_id: str, **config):
|
|
return {"source_record_id": record_id, "config": config}
|
|
|
|
|
|
def test_build_sync_plan_groups_platform_rows_and_deduplicates_ids():
|
|
styles, report = build_sync_plan(
|
|
[
|
|
_row(
|
|
"tm-1",
|
|
style_name=" 极星pro ",
|
|
brand="光影行星",
|
|
erp_codes="10398,10398",
|
|
platform="天猫",
|
|
item_ids="TM-1,TM-2",
|
|
),
|
|
_row(
|
|
"jd-1",
|
|
style_name="极星pro",
|
|
brand="光影行星",
|
|
erp_codes=["10398"],
|
|
platform="京东旗舰店",
|
|
item_ids=["JD-1", "JD-1"],
|
|
),
|
|
]
|
|
)
|
|
|
|
assert [style.name for style in styles] == ["极星pro"]
|
|
assert styles[0].erp_codes == ["10398"]
|
|
assert styles[0].platform_product_ids == {
|
|
"tm": ["TM-1", "TM-2"],
|
|
"jd": ["JD-1"],
|
|
"jd_self": [],
|
|
"dy": [],
|
|
}
|
|
assert report["collectable_styles"] == ["极星pro"]
|
|
|
|
|
|
def test_build_sync_plan_reports_unknown_platform_and_blank_style():
|
|
styles, report = build_sync_plan(
|
|
[
|
|
_row(
|
|
"pdd-1",
|
|
style_name="宙斯",
|
|
brand="光影行星",
|
|
erp_codes="10489",
|
|
platform="拼多多",
|
|
item_ids="PDD-1",
|
|
),
|
|
_row(
|
|
"blank-1",
|
|
style_name="",
|
|
brand="",
|
|
erp_codes="",
|
|
platform="天猫",
|
|
item_ids="",
|
|
),
|
|
]
|
|
)
|
|
|
|
assert [style.name for style in styles] == ["宙斯"]
|
|
assert report["unknown_platform_rows"] == [
|
|
{
|
|
"style": "宙斯",
|
|
"platform": "拼多多",
|
|
"item_count": 1,
|
|
"record_id": "pdd-1",
|
|
}
|
|
]
|
|
assert report["skipped_rows"] == [
|
|
{"record_id": "blank-1", "reason": "款式名称为空"}
|
|
]
|
|
|
|
|
|
def test_merge_target_row_does_not_erase_existing_identity_with_blank_source():
|
|
style = StyleIdentity(name="宙斯")
|
|
merged = _merge_target_row(
|
|
style,
|
|
{
|
|
"name": "宙斯",
|
|
"brand": "光影行星",
|
|
"erp_style_codes": ["10489"],
|
|
"platform_product_ids": {
|
|
"天猫": ["OLD-TM"],
|
|
"tm": ["TM-1"],
|
|
"jd": ["JD-1"],
|
|
},
|
|
},
|
|
)
|
|
|
|
assert merged["brand"] == "光影行星"
|
|
assert merged["erp_style_codes"] == ["10489"]
|
|
assert merged["platform_product_ids"]["tm"] == ["TM-1"]
|
|
assert merged["platform_product_ids"]["jd"] == ["JD-1"]
|
|
assert merged["platform_product_ids"]["jd_self"] == []
|
|
assert merged["platform_product_ids"]["dy"] == []
|