diff --git a/app/models/calculator/flat_percent_per_item.rb b/app/models/calculator/flat_percent_per_item.rb index f9e197c594..dfcc71ed99 100644 --- a/app/models/calculator/flat_percent_per_item.rb +++ b/app/models/calculator/flat_percent_per_item.rb @@ -14,6 +14,9 @@ class Calculator::FlatPercentPerItem < Spree::Calculator localize_number :preferred_flat_percent + validates :preferred_flat_percent, + numericality: { message: :calculator_preferred_value_error } + def self.description I18n.t(:flat_percent_per_item) end diff --git a/spec/models/calculator/flat_percent_per_item_spec.rb b/spec/models/calculator/flat_percent_per_item_spec.rb index 6f16a9fe6a..24c5a68f4b 100644 --- a/spec/models/calculator/flat_percent_per_item_spec.rb +++ b/spec/models/calculator/flat_percent_per_item_spec.rb @@ -5,6 +5,11 @@ require 'spec_helper' describe Calculator::FlatPercentPerItem do let(:calculator) { Calculator::FlatPercentPerItem.new preferred_flat_percent: 20 } + it do + should validate_numericality_of(:preferred_flat_percent). + with_message("Invalid input. Please use only numbers. For example: 10, 5.5, -20") + end + it "calculates for a simple line item" do line_item = Spree::LineItem.new price: 50, quantity: 2 expect(calculator.compute(line_item)).to eq 20