diff --git a/app/models/crop.rb b/app/models/crop.rb index 75b2a1ffb..73be923aa 100644 --- a/app/models/crop.rb +++ b/app/models/crop.rb @@ -4,6 +4,7 @@ class Crop < ActiveRecord::Base attr_accessible :en_wikipedia_url, :system_name has_many :scientific_names has_many :plantings + default_scope order("lower(system_name) asc") def Crop.random @crop = Crop.offset(rand(Crop.count)).first diff --git a/app/views/plantings/_form.html.haml b/app/views/plantings/_form.html.haml index 52c432fe7..cdbb15531 100644 --- a/app/views/plantings/_form.html.haml +++ b/app/views/plantings/_form.html.haml @@ -8,7 +8,7 @@ .control-group = f.label 'What did you plant?', :class => 'control-label' - .controls= collection_select(:planting, :crop_id, Crop.all(:order => :system_name), :id, :system_name, :selected => @crop.id) + .controls= collection_select(:planting, :crop_id, Crop.all, :id, :system_name, :selected => @crop.id) .control-group = f.label 'Where did you plant it?', :class => 'control-label' .controls= collection_select(:planting, :garden_id, diff --git a/spec/factories/crop.rb b/spec/factories/crop.rb index ae36699ba..4ae2367d0 100644 --- a/spec/factories/crop.rb +++ b/spec/factories/crop.rb @@ -30,6 +30,16 @@ FactoryGirl.define do system_name "Pear" end + # This should have a name that is alphabetically earlier than :uppercase + # crop to ensure that the ordering tests work. + factory :lowercasecrop do + system_name "ffrench bean" + end + + factory :uppercasecrop do + system_name "Swiss chard" + end + end end diff --git a/spec/models/crop_spec.rb b/spec/models/crop_spec.rb index 36f645451..4716526ac 100644 --- a/spec/models/crop_spec.rb +++ b/spec/models/crop_spec.rb @@ -42,4 +42,12 @@ describe Crop do @rand_crop.system_name.should == 'Tomato' end end + + context 'ordering' do + it "should be sorted case-insensitively" do + uppercase = FactoryGirl.create(:uppercasecrop) + lowercase = FactoryGirl.create(:lowercasecrop) + Crop.first.should == lowercase + end + end end diff --git a/spec/views/plantings/_form.html.haml_spec.rb b/spec/views/plantings/_form.html.haml_spec.rb new file mode 100644 index 000000000..6c81c85ba --- /dev/null +++ b/spec/views/plantings/_form.html.haml_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +describe "plantings/_form" do + before(:each) do + @member = FactoryGirl.create(:member) + @garden = FactoryGirl.create(:garden, :owner => @member) + @uppercase = FactoryGirl.create(:uppercasecrop) + @lowercase = FactoryGirl.create(:lowercasecrop) + @crop = @lowercase # needed to render the form + + @planting = FactoryGirl.create(:planting, + :garden => @garden, + :crop => @crop + ) + render + end + + context "logged in" do + it "orders crops alphabetically" do + rendered.should =~ /#{@lowercase.system_name}.*#{@uppercase.system_name}/m + end + end +end +