assertSame( ['policy_id', 'country_code', 'items', 'group_total', 'total_quantity'], $values, ); } public function test_options_have_value_and_translated_label(): void { $options = ShippingApiRequestField::options(); $this->assertCount(5, $options); foreach ($options as $option) { $this->assertArrayHasKey('value', $option); $this->assertArrayHasKey('label', $option); // 라벨은 백엔드 SSoT 에서 번역되어 내려감 — 미해석 키 원문이 아니어야 한다 $this->assertNotEmpty($option['label']); $this->assertStringNotContainsString('shipping_api_request_field', $option['label']); } } public function test_label_returns_translated_string_per_case(): void { // ko 로케일 기준 — enums.php SSoT 의 한국어 라벨과 일치 $this->assertSame('배송정책 ID', ShippingApiRequestField::POLICY_ID->label()); $this->assertSame('국가 코드', ShippingApiRequestField::COUNTRY_CODE->label()); $this->assertSame('주문 항목', ShippingApiRequestField::ITEMS->label()); $this->assertSame('그룹 합계 금액', ShippingApiRequestField::GROUP_TOTAL->label()); $this->assertSame('총 수량', ShippingApiRequestField::TOTAL_QUANTITY->label()); } public function test_values_match_calculation_request_data_keys(): void { // OrderCalculationService::calculateApiShippingFee() $requestData 키와 1:1 일치 $requestDataKeys = ['policy_id', 'country_code', 'items', 'group_total', 'total_quantity']; $this->assertSame($requestDataKeys, ShippingApiRequestField::values()); } }