test(ecommerce): 통화 스냅샷 부재 테스트가 팩토리 기본값에 의존하던 문제 수정

test_mc_fields_null_without_currency_snapshot 은 "OrderFactory 가 currency_snapshot 을
비워 둔다"는 전제로 작성됐으나, 이후 팩토리에 기본 스냅샷이 추가되면서 전제가 무너져
클린 트리에서도 실패하고 있었다. 비즈니스 로직 회귀가 아니라 stale test 다.

팩토리 기본값에 의존하지 않고 currency_snapshot 을 명시적으로 null 로 주입해
레거시 주문(다통화 도입 이전 행)의 취소 경로를 재현한다. 전제가 다시 조용히
무너지지 않도록 assert 로 고정했다.

전액취소 경로의 스냅샷 가드를 무력화하면 이 테스트가 실패하는 것을 확인했다.
This commit is contained in:
HeuJung
2026-08-06 11:50:52 +09:00
parent cd82fe3fb4
commit eb724ed348
@@ -4775,6 +4775,9 @@ class OrderAdjustmentServiceTest extends ModuleTestCase
/**
* 다중통화 스냅샷이 없는 주문의 환불 시 mc_* 필드는 모두 null입니다.
*
* 레거시 주문(다통화 도입 이전에 생성되어 currency_snapshot 이 비어 있는 행)의 취소 경로를
* 검증한다. OrderFactory 는 기본 스냅샷을 채우므로 여기서는 명시적으로 null 을 주입한다.
*/
public function test_mc_fields_null_without_currency_snapshot(): void
{
@@ -4790,6 +4793,8 @@ class OrderAdjustmentServiceTest extends ModuleTestCase
// 통화 설정이 비어 있을 때만 우연히 falsy 가 되므로, 앞선 테스트가 통화 설정을 남기면
// 이 테스트가 간헐 실패한다. "스냅샷 없는 주문" 이라는 전제를 명시적으로 못박는다.
$order = $this->createOrderFromCalculation($input, ['currency_snapshot' => null]);
$this->assertNull($order->currency_snapshot, '테스트 전제: 주문에 통화 스냅샷이 없다');
$optA = $order->options->first();
$cancellation = $this->buildCancellation([
['order_option_id' => $optA->id, 'cancel_quantity' => 1],