test(ecommerce): 통화 스냅샷 부재 테스트가 팩토리 기본값에 의존하던 문제 수정
test_mc_fields_null_without_currency_snapshot 은 "OrderFactory 가 currency_snapshot 을 비워 둔다"는 전제로 작성됐으나, 이후 팩토리에 기본 스냅샷이 추가되면서 전제가 무너져 클린 트리에서도 실패하고 있었다. 비즈니스 로직 회귀가 아니라 stale test 다. 팩토리 기본값에 의존하지 않고 currency_snapshot 을 명시적으로 null 로 주입해 레거시 주문(다통화 도입 이전 행)의 취소 경로를 재현한다. 전제가 다시 조용히 무너지지 않도록 assert 로 고정했다. 전액취소 경로의 스냅샷 가드를 무력화하면 이 테스트가 실패하는 것을 확인했다.
This commit is contained in:
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user