From 6113be1e69fef539b2f043d6afa5181a1a05ff87 Mon Sep 17 00:00:00 2001 From: Skud Date: Mon, 28 Jan 2013 18:19:59 +1100 Subject: [PATCH] sorting gardens alphabetically, so behaviour is clearer --- app/models/garden.rb | 2 ++ spec/factories/garden.rb | 10 ++++++++++ spec/models/garden_spec.rb | 8 ++++++++ spec/views/plantings/edit.html.haml_spec.rb | 5 ++--- spec/views/plantings/new.html.haml_spec.rb | 14 +++++++++----- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/models/garden.rb b/app/models/garden.rb index 8e17873ce..ecacfc17f 100644 --- a/app/models/garden.rb +++ b/app/models/garden.rb @@ -7,6 +7,8 @@ class Garden < ActiveRecord::Base has_many :plantings, :order => 'created_at DESC' has_many :crops, :through => :plantings + default_scope order("lower(name) asc") + def garden_slug "#{owner.login_name}-#{name}".downcase.gsub(' ', '-') end diff --git a/spec/factories/garden.rb b/spec/factories/garden.rb index 12d95040f..d699e5e58 100644 --- a/spec/factories/garden.rb +++ b/spec/factories/garden.rb @@ -3,5 +3,15 @@ FactoryGirl.define do name 'Springfield Community Garden' description "This is a **totally** cool garden" owner + + # the following are used for testing alphabetical ordering + factory :garden_a do + name 'A garden starting with A' + end + + factory :garden_z do + name 'Zzzz this garden makes me sleepy' + end + end end diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb index 40b17cc3a..58dc4a591 100644 --- a/spec/models/garden_spec.rb +++ b/spec/models/garden_spec.rb @@ -59,4 +59,12 @@ describe Garden do end end + context 'ordering' do + it "should be sorted alphabetically" do + z = FactoryGirl.create(:garden_z) + a = FactoryGirl.create(:garden_a) + Garden.first.should == a + end + end + end diff --git a/spec/views/plantings/edit.html.haml_spec.rb b/spec/views/plantings/edit.html.haml_spec.rb index 95f73c911..d5b12e3b9 100644 --- a/spec/views/plantings/edit.html.haml_spec.rb +++ b/spec/views/plantings/edit.html.haml_spec.rb @@ -17,9 +17,8 @@ describe "plantings/edit" do @maize = FactoryGirl.create(:maize) # and likewise for gardens - @garden = FactoryGirl.create(:garden, :owner => @right_member) - @garden2 = FactoryGirl.create(:garden, :owner => @right_member, - :name => "An alphabetically earlier garden") + @garden = FactoryGirl.create(:garden_z, :owner => @right_member) + @garden2 = FactoryGirl.create(:garden_a, :owner => @right_member) @planting = assign(:planting, FactoryGirl.create(:planting, :garden => @garden, :crop => @tomato) diff --git a/spec/views/plantings/new.html.haml_spec.rb b/spec/views/plantings/new.html.haml_spec.rb index c9ec1aeef..b97e54187 100644 --- a/spec/views/plantings/new.html.haml_spec.rb +++ b/spec/views/plantings/new.html.haml_spec.rb @@ -5,12 +5,15 @@ describe "plantings/new" do @member = FactoryGirl.create(:member) # create gardens and crops to populate dropdowns - @garden1 = FactoryGirl.create(:garden, :owner => @member, :name => 'Garden1') - @garden2 = FactoryGirl.create(:garden, :owner => @member, :name => 'Garden2') + @garden_a = FactoryGirl.create(:garden, :owner => @member) + @garden_z = FactoryGirl.create(:garden, :owner => @member) @crop1 = FactoryGirl.create(:tomato) @crop2 = FactoryGirl.create(:maize) - assign(:planting, FactoryGirl.create(:planting, :garden => @garden1)) + assign(:planting, FactoryGirl.create(:planting, + :garden => @garden_a, + :crop => @crop2 + )) end @@ -24,8 +27,9 @@ describe "plantings/new" do context "logged in" do before(:each) do sign_in @member + assign(:planting, Planting.new()) assign(:crop, @crop2) - assign(:garden, @garden2) + assign(:garden, @garden_z) render end @@ -45,7 +49,7 @@ describe "plantings/new" do it "selects a garden given in a param" do assert_select "select#planting_garden_id", - :html => /option value="#{@garden2.id}" selected="selected"/ + :html => /option value="#{@garden_z.id}" selected="selected"/ end end end