Merge pull request #97 from Skud/planting-defaults

Planting defaults
This commit is contained in:
Skud
2013-01-28 01:43:11 -08:00
6 changed files with 51 additions and 12 deletions

View File

@@ -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

View File

@@ -8,11 +8,11 @@
.control-group
= f.label 'What did you plant?', :class => 'control-label'
.controls= collection_select(:planting, :crop_id, Crop.all, :id, :system_name, :selected => @crop.id)
.controls= collection_select(:planting, :crop_id, Crop.all, :id, :system_name, :selected => @planting.crop_id || @crop.id)
.control-group
= f.label 'Where did you plant it?', :class => 'control-label'
.controls= collection_select(:planting, :garden_id,
Garden.where(:owner_id => current_member), :id, :name, :selected => @garden.id)
Garden.where(:owner_id => current_member), :id, :name, :selected => @planting.garden_id || @garden.id)
.control-group
= f.label 'When?', :class => 'control-label'
.controls= f.date_select :planted_at, options = { :include_blank => true }, html_options = { :class => "span1" }

View File

@@ -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

View File

@@ -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

View File

@@ -11,11 +11,17 @@ describe "plantings/edit" do
:email => 'wrong@example.com'
)
@crop = FactoryGirl.create(:crop)
@garden = FactoryGirl.create(:garden, :owner => @right_member)
# creating two crops to make sure that the correct one is selected
# in the form.
@tomato = FactoryGirl.create(:tomato)
@maize = FactoryGirl.create(:maize)
# and likewise for gardens
@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 => @crop)
FactoryGirl.create(:planting, :garden => @garden, :crop => @tomato)
)
end
@@ -47,11 +53,20 @@ describe "plantings/edit" do
it "renders the edit planting form" do
assert_select "form", :action => plantings_path(@planting), :method => "post" do
assert_select "select#planting_garden_id", :name => "planting[garden_id]"
assert_select "select#planting_crop_id", :name => "planting[crop_id]"
assert_select "input#planting_quantity", :name => "planting[quantity]"
assert_select "textarea#planting_description", :name => "planting[description]"
end
end
it "chooses the right crop" do
assert_select "select#planting_crop_id",
:html => /option value="#{@tomato.id}" selected="selected"/
end
it "chooses the right garden" do
assert_select "select#planting_garden_id",
:html => /option value="#{@garden.id}" selected="selected"/
end
end
end

View File

@@ -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