From 53d782bc835b65feb8bf441276cae0f35bbf7ec0 Mon Sep 17 00:00:00 2001 From: Wendy Smoak Date: Tue, 18 Nov 2014 20:33:44 -0500 Subject: [PATCH 1/2] Prevent the creation of a garden with a negative number for the area. If entered, the area must be greater than or equal to zero. --- app/models/garden.rb | 2 +- spec/features/gardens_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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 1b803a41e..6f9d9af36 100644 --- a/spec/features/gardens_spec.rb +++ b/spec/features/gardens_spec.rb @@ -33,6 +33,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" From 02994bd5cc6d279697205222d9f3413c2b8db927 Mon Sep 17 00:00:00 2001 From: Wendy Smoak Date: Tue, 18 Nov 2014 20:58:00 -0500 Subject: [PATCH 2/2] Added a test for the validator to show it doesn't accept negative numbers for garden area. --- spec/models/garden_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) 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