From c68987c0f2ce1cc8c302975879b3f6eb73004d35 Mon Sep 17 00:00:00 2001 From: James Wu Date: Tue, 24 Jan 2023 16:23:04 +0900 Subject: [PATCH] Add numericality validation for PerItem --- app/models/calculator/per_item.rb | 3 +++ spec/models/calculator/per_item_spec.rb | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/app/models/calculator/per_item.rb b/app/models/calculator/per_item.rb index f8cce8e7a7..c7329add95 100644 --- a/app/models/calculator/per_item.rb +++ b/app/models/calculator/per_item.rb @@ -10,6 +10,9 @@ module Calculator localize_number :preferred_amount + validates :preferred_amount, + numericality: { message: :calculator_preferred_value_error } + def self.description I18n.t(:flat_rate_per_item) end diff --git a/spec/models/calculator/per_item_spec.rb b/spec/models/calculator/per_item_spec.rb index cde6cae8f5..56bc0c96a2 100644 --- a/spec/models/calculator/per_item_spec.rb +++ b/spec/models/calculator/per_item_spec.rb @@ -7,6 +7,11 @@ describe Calculator::PerItem do let(:shipping_calculable) { double(:calculable) } let(:line_item) { build_stubbed(:line_item, quantity: 5) } + it do + should validate_numericality_of(:preferred_amount). + with_message("Invalid input. Please use only numbers. For example: 10, 5.5, -20") + end + it "correctly calculates on a single line item object" do allow(calculator).to receive_messages(calculable: shipping_calculable) expect(calculator.compute(line_item).to_f).to eq(50) # 5 x 10