mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-24 16:58:35 -04:00
Merge branch 'dev' of https://github.com/Growstuff/growstuff into dev
Conflicts: spec/views/crops/show.html.haml_spec.rb
This commit is contained in:
11
spec/controllers/seeds_controller_spec.rb
Normal file
11
spec/controllers/seeds_controller_spec.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe SeedsController do
|
||||
describe "GET index" do
|
||||
it "picks up owner from params" do
|
||||
owner = FactoryGirl.create(:member)
|
||||
get :index, {:owner_id => owner.id}
|
||||
assigns(:owner).should eq(owner)
|
||||
end
|
||||
end
|
||||
end
|
||||
16
spec/factories/seeds.rb
Normal file
16
spec/factories/seeds.rb
Normal file
@@ -0,0 +1,16 @@
|
||||
# Read about factories at https://github.com/thoughtbot/factory_girl
|
||||
|
||||
FactoryGirl.define do
|
||||
factory :seed do
|
||||
owner
|
||||
crop
|
||||
description "MyText"
|
||||
quantity 1
|
||||
plant_before "2013-07-15"
|
||||
|
||||
factory :tradable_seed do
|
||||
tradable true
|
||||
tradable_to "locally"
|
||||
end
|
||||
end
|
||||
end
|
||||
28
spec/models/seed_spec.rb
Normal file
28
spec/models/seed_spec.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe Seed do
|
||||
|
||||
before(:each) do
|
||||
@seed = FactoryGirl.build(:seed)
|
||||
end
|
||||
|
||||
it 'should save a basic seed' do
|
||||
@seed.save.should be_true
|
||||
end
|
||||
|
||||
context 'tradable' do
|
||||
it 'all three valid tradable_to values should work' do
|
||||
['locally', 'nationally', 'internationally', nil, ''].each do |t|
|
||||
@seed = FactoryGirl.build(:seed, :tradable_to => t)
|
||||
@seed.should be_valid
|
||||
end
|
||||
end
|
||||
|
||||
it 'should refuse invalid tradable_to values' do
|
||||
@seed = FactoryGirl.build(:seed, :tradable_to => 'not valid')
|
||||
@seed.should_not be_valid
|
||||
@seed.errors[:tradable_to].should include("You may only trade seed locally, nationally, or internationally")
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
11
spec/requests/seeds_spec.rb
Normal file
11
spec/requests/seeds_spec.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "Seeds" do
|
||||
describe "GET /seeds" do
|
||||
it "works! (now write some real specs)" do
|
||||
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
|
||||
get seeds_path
|
||||
response.status.should be(200)
|
||||
end
|
||||
end
|
||||
end
|
||||
35
spec/routing/seeds_routing_spec.rb
Normal file
35
spec/routing/seeds_routing_spec.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
require "spec_helper"
|
||||
|
||||
describe SeedsController do
|
||||
describe "routing" do
|
||||
|
||||
it "routes to #index" do
|
||||
get("/seeds").should route_to("seeds#index")
|
||||
end
|
||||
|
||||
it "routes to #new" do
|
||||
get("/seeds/new").should route_to("seeds#new")
|
||||
end
|
||||
|
||||
it "routes to #show" do
|
||||
get("/seeds/1").should route_to("seeds#show", :id => "1")
|
||||
end
|
||||
|
||||
it "routes to #edit" do
|
||||
get("/seeds/1/edit").should route_to("seeds#edit", :id => "1")
|
||||
end
|
||||
|
||||
it "routes to #create" do
|
||||
post("/seeds").should route_to("seeds#create")
|
||||
end
|
||||
|
||||
it "routes to #update" do
|
||||
put("/seeds/1").should route_to("seeds#update", :id => "1")
|
||||
end
|
||||
|
||||
it "routes to #destroy" do
|
||||
delete("/seeds/1").should route_to("seeds#destroy", :id => "1")
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@@ -28,7 +28,6 @@ describe "crops/show" do
|
||||
it "links to the right crop in the planting link" do
|
||||
render
|
||||
assert_select("a[href=#{new_planting_path}?crop_id=#{@crop.id}]")
|
||||
end
|
||||
|
||||
context "has plantings" do
|
||||
before(:each) do
|
||||
@@ -116,6 +115,29 @@ describe "crops/show" do
|
||||
|
||||
end
|
||||
|
||||
it 'tells you to sign in/sign up' do
|
||||
render
|
||||
rendered.should contain 'Sign in or sign up to plant'
|
||||
rendered.should contain 'Sign in or sign up to add seed'
|
||||
end
|
||||
|
||||
context 'logged in' do
|
||||
before(:each) do
|
||||
@member = FactoryGirl.create(:member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
render
|
||||
end
|
||||
|
||||
it "shows a plant this button" do
|
||||
rendered.should contain "Plant this"
|
||||
end
|
||||
|
||||
it "links to the right crop in the planting link" do
|
||||
assert_select("a[href=#{new_planting_path}?crop_id=#{@crop.id}]")
|
||||
end
|
||||
end
|
||||
|
||||
context "logged in and crop wrangler" do
|
||||
|
||||
before(:each) do
|
||||
|
||||
@@ -43,6 +43,7 @@ describe 'home/index.html.haml', :type => "view" do
|
||||
:garden => @member.gardens.first
|
||||
)
|
||||
assign(:plantings, [@planting])
|
||||
@seed = FactoryGirl.create(:seed, :owner => @member)
|
||||
@forum = FactoryGirl.create(:forum, :owner => @member)
|
||||
@post = FactoryGirl.create(:post, :author => @member)
|
||||
assign(:posts, [@post])
|
||||
@@ -62,6 +63,11 @@ describe 'home/index.html.haml', :type => "view" do
|
||||
assert_select "a[href=#{url_for(@member.gardens.first)}]", "Garden"
|
||||
end
|
||||
|
||||
it 'shows seeds' do
|
||||
rendered.should contain "Your seed stash"
|
||||
rendered.should contain "1 variety"
|
||||
end
|
||||
|
||||
it 'shows account type' do
|
||||
rendered.should contain "Free account"
|
||||
end
|
||||
|
||||
@@ -5,7 +5,8 @@ describe "plantings/show" do
|
||||
@garden = FactoryGirl.create(:garden, :owner => @member)
|
||||
@crop = FactoryGirl.create(:tomato)
|
||||
@planting = assign(:planting,
|
||||
FactoryGirl.create(:planting, :garden => @garden, :crop => @crop)
|
||||
FactoryGirl.create(:planting, :garden => @garden, :crop => @crop,
|
||||
:planted_from => 'cutting')
|
||||
)
|
||||
end
|
||||
|
||||
@@ -45,7 +46,7 @@ describe "plantings/show" do
|
||||
it "shows planted_from" do
|
||||
render
|
||||
rendered.should contain 'Planted from:'
|
||||
rendered.should contain 'seed'
|
||||
rendered.should contain 'cutting'
|
||||
end
|
||||
|
||||
it "doesn't show planted_from if blank" do
|
||||
@@ -53,7 +54,7 @@ describe "plantings/show" do
|
||||
@p.save
|
||||
render
|
||||
rendered.should_not contain 'Planted from:'
|
||||
rendered.should_not contain 'seed'
|
||||
rendered.should_not contain 'cutting'
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
23
spec/views/seeds/edit.html.haml_spec.rb
Normal file
23
spec/views/seeds/edit.html.haml_spec.rb
Normal file
@@ -0,0 +1,23 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "seeds/edit" do
|
||||
before(:each) do
|
||||
@member = FactoryGirl.create(:member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
@seed = FactoryGirl.create(:seed, :owner => @member)
|
||||
end
|
||||
|
||||
it "renders the edit seed form" do
|
||||
render
|
||||
|
||||
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
||||
assert_select "form", :action => seeds_path(@seed), :method => "post" do
|
||||
assert_select "select#seed_crop_id", :name => "seed[crop_id]"
|
||||
assert_select "textarea#seed_description", :name => "seed[description]"
|
||||
assert_select "input#seed_quantity", :name => "seed[quantity]"
|
||||
assert_select "input#seed_tradable", :name => "seed[tradable]"
|
||||
assert_select "select#seed_tradable_to", :name => "seed[tradable_to]"
|
||||
end
|
||||
end
|
||||
end
|
||||
35
spec/views/seeds/index.html.haml_spec.rb
Normal file
35
spec/views/seeds/index.html.haml_spec.rb
Normal file
@@ -0,0 +1,35 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "seeds/index" do
|
||||
before(:each) do
|
||||
@member = FactoryGirl.create(:member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
@seed1 = FactoryGirl.create(:seed, :owner => @member)
|
||||
assign(:seeds, [@seed1, @seed1])
|
||||
end
|
||||
|
||||
it "renders a list of seeds" do
|
||||
render
|
||||
assert_select "tr>td", :text => @seed1.crop.system_name, :count => 2
|
||||
assert_select "tr>td", :text => @seed1.owner.login_name, :count => 2
|
||||
assert_select "tr>td", :text => @seed1.quantity.to_s, :count => 2
|
||||
end
|
||||
|
||||
context "tradable" do
|
||||
before(:each) do
|
||||
@owner = FactoryGirl.create(:london_member)
|
||||
@seed1 = FactoryGirl.create(:tradable_seed, :owner => @owner)
|
||||
assign(:seeds, [@seed1, @seed1])
|
||||
render
|
||||
end
|
||||
|
||||
it "shows tradable seeds" do
|
||||
assert_select "tr>td", :text => @seed1.tradable_to, :count => 2
|
||||
end
|
||||
|
||||
it "shows location of seed owner" do
|
||||
assert_select "tr>td", :text => @owner.location, :count => 2
|
||||
end
|
||||
end
|
||||
end
|
||||
49
spec/views/seeds/new.html.haml_spec.rb
Normal file
49
spec/views/seeds/new.html.haml_spec.rb
Normal file
@@ -0,0 +1,49 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "seeds/new" do
|
||||
before(:each) do
|
||||
@member = FactoryGirl.create(:member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
@seed1 = FactoryGirl.create(:seed, :owner => @member)
|
||||
assign(:seed, @seed1)
|
||||
end
|
||||
|
||||
it "renders new seed form" do
|
||||
render
|
||||
assert_select "form", :action => seeds_path, :method => "post" do
|
||||
assert_select "select#seed_crop_id", :name => "seed[crop_id]"
|
||||
assert_select "textarea#seed_description", :name => "seed[description]"
|
||||
assert_select "input#seed_quantity", :name => "seed[quantity]"
|
||||
assert_select "input#seed_tradable", :name => "seed[tradable]"
|
||||
assert_select "select#seed_tradable_to", :name => "seed[tradable_to]"
|
||||
end
|
||||
end
|
||||
|
||||
it 'reminds you to set your location' do
|
||||
render
|
||||
rendered.should contain "Don't forget to set your location."
|
||||
assert_select "a", :text => "set your location"
|
||||
end
|
||||
|
||||
context 'member has location' do
|
||||
before(:each) do
|
||||
@member = FactoryGirl.create(:london_member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
@seed1 = FactoryGirl.create(:seed, :owner => @member)
|
||||
assign(:seed, @seed1)
|
||||
end
|
||||
|
||||
it 'shows the location' do
|
||||
render
|
||||
rendered.should contain "from #{@member.location}."
|
||||
end
|
||||
|
||||
it 'links to change location' do
|
||||
render
|
||||
assert_select "a", :text => "Change your location."
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
63
spec/views/seeds/show.html.haml_spec.rb
Normal file
63
spec/views/seeds/show.html.haml_spec.rb
Normal file
@@ -0,0 +1,63 @@
|
||||
require 'spec_helper'
|
||||
|
||||
describe "seeds/show" do
|
||||
before(:each) do
|
||||
controller.stub(:current_user) { nil }
|
||||
@seed = FactoryGirl.create(:seed)
|
||||
assign(:seed, @seed)
|
||||
end
|
||||
|
||||
it "renders attributes in <p>" do
|
||||
render
|
||||
rendered.should contain @seed.crop.system_name
|
||||
end
|
||||
|
||||
context "tradable" do
|
||||
before(:each) do
|
||||
@owner = FactoryGirl.create(:london_member)
|
||||
assign(:seed, FactoryGirl.create(:tradable_seed,
|
||||
:owner => @owner))
|
||||
# note current_member is not the owner of this seed
|
||||
@member = FactoryGirl.create(:member)
|
||||
sign_in @member
|
||||
controller.stub(:current_user) { @member }
|
||||
end
|
||||
|
||||
it "shows tradable attributes" do
|
||||
render
|
||||
rendered.should contain "Tradable: Yes"
|
||||
rendered.should contain "Will trade to: locally"
|
||||
end
|
||||
|
||||
it "shows location of seed owner" do
|
||||
render
|
||||
rendered.should contain @owner.location
|
||||
end
|
||||
|
||||
context 'with no location' do
|
||||
before(:each) do
|
||||
@owner = FactoryGirl.create(:member) # no location
|
||||
sign_in @owner
|
||||
controller.stub(:current_user) { @owner }
|
||||
assign(:seed, FactoryGirl.create(:tradable_seed, :owner => @owner))
|
||||
end
|
||||
|
||||
it 'says "from unspecified location"' do
|
||||
render
|
||||
rendered.should contain "(from unspecified location)"
|
||||
end
|
||||
|
||||
it "links to profile to set location" do
|
||||
render
|
||||
assert_select "a[href=#{url_for(edit_member_registration_path)}]", :text => "Set Location"
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
it "shows button to send message" do
|
||||
render
|
||||
rendered.should contain "Request seeds"
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user