diff --git a/app/models/garden.rb b/app/models/garden.rb index 7f64994cc..6465a474a 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -26,7 +26,7 @@ class Garden < ActiveRecord::Base } validates :area, - :numericality => { :only_integer => false }, + :numericality => { :only_integer => false, :greater_than_or_equal_to => 0 }, :allow_nil => true AREA_UNITS_VALUES = { diff --git a/spec/features/gardens_spec.rb b/spec/features/gardens_spec.rb index 2b4c22d8b..5c689db44 100644 --- a/spec/features/gardens_spec.rb +++ b/spec/features/gardens_spec.rb @@ -35,6 +35,15 @@ feature "Planting a crop", :js => true do expect(page).to have_content "New garden" end + scenario "Refuse to create new garden with negative area" do + visit new_garden_path + fill_in "Name", :with => "Negative Garden" + fill_in "Area", :with => -5 + click_button "Save" + expect(page).not_to have_content "Garden was successfully created" + expect(page).to have_content "Area must be greater than or equal to 0" + end + scenario "Edit garden" do visit new_garden_path fill_in "Name", :with => "New garden" diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index 8bf355cd0..9ed7e5196 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -102,6 +102,11 @@ describe Garden do @garden.should be_valid end + it "doesn't allow negative area" do + @garden = FactoryGirl.build(:garden, :area => -5) + @garden.should_not be_valid + end + it 'allows decimal quantities' do @garden = FactoryGirl.build(:garden, :area => 3.3) @garden.should be_valid