feat(cafe24): 품목 추가·삭제 + 옵션 재생성
- 추가(「+ 행 추가」/불러오기의 새 이름): 저장 시 옵션값을 끝에 덧붙여
PUT options(allow_append — 앞 위치는 그대로라 기존 이름이 밀리지 않음).
카페24가 품목을 자동 생성하면 wait_for_variants 로 새 코드를 받아
자체코드·추가금액·진열/판매를 이어서 PUT. 거부 시 오류 그대로 표시.
- 삭제(행 ✕): DELETE /variants/{code}. 지연 중 GET 에 남는 삭제 품목은
스냅샷 {"_deleted": true} 로 걸러냄. 품목 없는 옵션값은 하단 안내로 분리.
- 옵션값 줄이기(개수 감소)는 서버가 거부 — 위치 짝맞춤으로 이름이 밀림.
- 옵션 재생성: 전체 삭제 → 현재 행으로 생성 → 코드/금액/썸네일 재반영
(품목코드 새로 부여, 강한 확인창).
- 유닛 91 통과, 통합 하네스(덧붙이기·삭제·지연 필터) 통과, 헤드리스 렌더 확인.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1075,6 +1075,31 @@ def test_build_update_options_request_rejects_count_mismatch():
|
||||
pass
|
||||
else:
|
||||
raise AssertionError(edited)
|
||||
# 덧붙이기는 allow_append 일 때만
|
||||
more = [{"option_name": "A", "option_value": [{"option_text": "1"}, {"option_text": "2", "option_image_file": "https://d/2.png"}]}]
|
||||
try:
|
||||
store.build_update_options_request(original, more)
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
raise AssertionError("append without flag accepted")
|
||||
body = store.build_update_options_request(original, more, allow_append=True)
|
||||
assert body["original_options"][0]["option_value"] == [{"option_text": "1"}]
|
||||
assert body["options"][0]["option_value"] == [{"option_text": "1"}, {"option_text": "2", "option_image_file": "https://d/2.png"}]
|
||||
# 줄이기는 allow_append 여도 거부 (위치 짝맞춤으로 이름이 밀린다)
|
||||
two = [{"option_name": "A", "option_value": [{"option_text": "1"}, {"option_text": "2"}]}]
|
||||
try:
|
||||
store.build_update_options_request(two, original, allow_append=True)
|
||||
except ValueError:
|
||||
pass
|
||||
else:
|
||||
raise AssertionError("shrink accepted")
|
||||
|
||||
|
||||
def test_delete_variant_wrapper():
|
||||
client = _RouteClient({"DELETE /admin/products/7/variants/P000000R000A": {"variant": {"variant_code": "P000000R000A"}}})
|
||||
products.delete_variant(client, 7, "p000000r000a")
|
||||
assert client.calls[-1][:2] == ("DELETE", "/admin/products/7/variants/P000000R000A")
|
||||
|
||||
|
||||
def test_build_variant_updates():
|
||||
|
||||
Reference in New Issue
Block a user