create(); $option = OrderOptionFactory::new()->forOrder($order)->create([ 'subtotal_discount_amount' => 0, ]); $array = (new OrderOptionResource($option->fresh()))->toArray(Request::create('/')); // raw 필드: 0자리 통화 정규화로 정수 0 (과거 "0.00" 문자열에서 변경) $this->assertSame(0, $array['subtotal_discount_amount']); // 숫자 보조 필드: 항상 float 로 노출 (타 소비처 호환) $this->assertArrayHasKey('subtotal_discount_amount_value', $array); $this->assertIsFloat($array['subtotal_discount_amount_value']); $this->assertSame(0.0, $array['subtotal_discount_amount_value']); } public function test_할인_옵션은_숫자형_보조필드가_양수_float로_노출된다(): void { $order = OrderFactory::new()->create(); $option = OrderOptionFactory::new()->forOrder($order)->create([ 'subtotal_discount_amount' => 3000, ]); $array = (new OrderOptionResource($option->fresh()))->toArray(Request::create('/')); // raw 필드: 0자리 통화 정규화로 정수 3000 (과거 "3000.00" 문자열에서 변경) $this->assertSame(3000, $array['subtotal_discount_amount']); $this->assertArrayHasKey('subtotal_discount_amount_value', $array); $this->assertIsFloat($array['subtotal_discount_amount_value']); $this->assertSame(3000.0, $array['subtotal_discount_amount_value']); $this->assertTrue($array['subtotal_discount_amount_value'] > 0); } }