diff --git a/app/models/garden.rb b/app/models/garden.rb
index 784bf0aa4..1e2c7faa8 100644
--- a/app/models/garden.rb
+++ b/app/models/garden.rb
@@ -6,7 +6,8 @@ class Garden < ActiveRecord::Base
belongs_to :user
def garden_slug
- "#{user.username}-#{name}"
+ formatted_name = name.downcase.gsub(' ', '-')
+ "#{user.username}-#{formatted_name}"
end
def owner
diff --git a/app/views/members/show.html.haml b/app/views/members/show.html.haml
index 840ff396f..abbc1fea9 100644
--- a/app/views/members/show.html.haml
+++ b/app/views/members/show.html.haml
@@ -18,7 +18,7 @@
%li{:class => first_garden ? 'active' : '' }
- first_garden = false
= link_to g.name, "#garden#{g.id}", 'data-toggle' => 'tab'
- %li= link_to 'New garden', '#garden_new', 'data-toggle' => 'tab'
+ %li= link_to 'New Garden', '#garden_new', 'data-toggle' => 'tab'
.tab-content
- first_garden = true
- @member.gardens.each do |g|
diff --git a/spec/factories/crop.rb b/spec/factories/crop.rb
index 88eb6af2d..978df4bb8 100644
--- a/spec/factories/crop.rb
+++ b/spec/factories/crop.rb
@@ -1,6 +1,8 @@
FactoryGirl.define do
factory :crop do
+ system_name "Magic bean"
+ en_wikipedia_url "http://en.wikipedia.org/wiki/Magic_bean"
factory :tomato do
system_name "Tomato"
diff --git a/spec/factories/garden.rb b/spec/factories/garden.rb
new file mode 100644
index 000000000..3581fc290
--- /dev/null
+++ b/spec/factories/garden.rb
@@ -0,0 +1,6 @@
+FactoryGirl.define do
+ factory :garden do
+ name 'My Garden'
+ user
+ end
+end
diff --git a/spec/factories/planting.rb b/spec/factories/planting.rb
new file mode 100644
index 000000000..f8fb5e4b0
--- /dev/null
+++ b/spec/factories/planting.rb
@@ -0,0 +1,9 @@
+FactoryGirl.define do
+ factory :planting do
+ garden
+ crop
+ planted_at Time.now
+ quantity 3
+ description "This is a *really* good plant."
+ end
+end
diff --git a/spec/factories/update.rb b/spec/factories/update.rb
new file mode 100644
index 000000000..735b3e0e7
--- /dev/null
+++ b/spec/factories/update.rb
@@ -0,0 +1,19 @@
+FactoryGirl.define do
+
+ factory :update do
+ subject "An Update"
+ body "This is some text."
+ user
+
+ # Markdown is allowed in updates
+ factory :markdown_update do
+ body "This is some **strong** text."
+ end
+
+ # HTML isn't allowed in updates
+ factory :html_update do
+ body 'EVIL'
+ end
+ end
+
+end
diff --git a/spec/factories/user.rb b/spec/factories/user.rb
index d5d3dc5cb..54124fc73 100644
--- a/spec/factories/user.rb
+++ b/spec/factories/user.rb
@@ -1,13 +1,25 @@
FactoryGirl.define do
factory :user do
- username "user1"
- password "password1"
- email "user1@example.com"
+ username 'user1'
+ password 'password1'
+ email 'user1@example.com'
tos_agreement true
+ confirmed_at Time.now()
- factory :confirmed_user do
- confirmed_at Time.now()
+ factory :no_tos_user do
+ tos_agreement false
+ email 'notos@example.com'
+ end
+
+ factory :unconfirmed_user do
+ confirmed_at nil
+ email 'confirmed@example.com'
+ end
+
+ factory :long_name_user do
+ username 'Marmaduke Blundell-Hollinshead-Blundell-Tolemache-Plantagenet-Whistlebinkie, 3rd Duke of Marmoset'
+ email 'marmaduke@example.com'
end
end
diff --git a/spec/models/garden_spec.rb b/spec/models/garden_spec.rb
index 53a39892b..81c95fe4c 100644
--- a/spec/models/garden_spec.rb
+++ b/spec/models/garden_spec.rb
@@ -2,14 +2,12 @@ require 'spec_helper'
describe Garden do
before :each do
- @user = mock_model(User)
- @user.stub!(:username).and_return("test1")
- @garden = Garden.new(:name => "my garden")
- @garden.user = @user
+ @user = FactoryGirl.create(:user)
+ @garden = FactoryGirl.create(:garden, :user => @user)
end
it "should have a slug" do
- @garden.garden_slug.should == "test1-my garden"
+ @garden.garden_slug.should == "user1-my-garden"
end
it "should have an owner" do
diff --git a/spec/models/planting_spec.rb b/spec/models/planting_spec.rb
index 09b90ced3..24d09bd6f 100644
--- a/spec/models/planting_spec.rb
+++ b/spec/models/planting_spec.rb
@@ -3,38 +3,20 @@ require 'spec_helper'
describe Planting do
before(:each) do
- @crop = Crop.create(
- :system_name => "Tomato",
- :en_wikipedia_url => "http://en.wikipedia.org/wiki/Tomato"
- )
-
- @user = User.create!(
- :username => 'foo',
- :password => 'irrelevant',
- :email => 'foo@example.com',
- :tos_agreement => true
- )
- @user.confirm!
-
- @garden = Garden.create(
- :user_id => @user.id,
- :name => 'bar'
- )
-
- @planting = Planting.create(
- :garden_id => @garden.id,
- :crop_id => @crop.id
- )
-
+ @crop = FactoryGirl.create(:tomato)
+ @user = FactoryGirl.create(:user)
+ @garden = FactoryGirl.create(:garden, :user => @user)
+ @planting = FactoryGirl.create(:planting,
+ :crop => @crop, :garden => @garden)
end
it "generates an owner" do
@planting.owner.should be_an_instance_of User
- @planting.owner.username.should match /^foo$/
+ @planting.owner.username.should match /^user1$/
end
it "generates a location" do
- @planting.location.should match /^foo's bar$/
+ @planting.location.should match /^user1's My Garden$/
end
end
diff --git a/spec/models/update_spec.rb b/spec/models/update_spec.rb
index db5d642eb..bb1eea97b 100644
--- a/spec/models/update_spec.rb
+++ b/spec/models/update_spec.rb
@@ -2,26 +2,22 @@ require 'spec_helper'
describe Update do
before(:each) do
- user = User.create! :username => "test", :password => "password",
- :email => "test@example.com", :tos_agreement => true
- user.confirm!
- @id = user.id
+ @user = FactoryGirl.create(:user)
end
it "should be sorted in reverse order" do
- Update.create! :subject => "first entry", :body => "blah", :user_id => @id
- Update.create! :subject => "second entry", :body => "blah", :user_id => @id
+ FactoryGirl.create(:update, :subject => 'first entry', :user => @user)
+ FactoryGirl.create(:update, :subject => 'second entry', :user => @user)
Update.first.subject.should == "second entry"
end
it "should have a slug" do
- update = Update.create! :subject => "slugs are nasty",
- :body => "They leave slime everywhere", :user_id => @id
- time = update.created_at
- datestr = time.strftime("%Y%m%d")
+ @update = FactoryGirl.create(:update, :user => @user)
+ @time = @update.created_at
+ @datestr = @time.strftime("%Y%m%d")
# 2 digit day and month, full-length years
# Counting digits using Math.log is not precise enough!
- datestr.length.should == 4 + time.year.to_s.size
- update.slug.should == "test-#{datestr}-slugs-are-nasty"
+ @datestr.length.should == 4 + @time.year.to_s.size
+ @update.slug.should == "#{@user.username}-#{@datestr}-an-update"
end
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 5bc9a6712..f15d13e4a 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -4,12 +4,7 @@ describe 'user' do
context 'valid user' do
before(:each) do
- @user = User.create(
- :email => "example@example.com",
- :username => "someone",
- :password => "irrelevant",
- :tos_agreement => true
- )
+ @user = FactoryGirl.create(:user)
end
it 'should save a basic user' do
@@ -18,10 +13,10 @@ describe 'user' do
it 'should be fetchable from the database' do
@user.save
- @user2 = User.find_by_email('example@example.com')
- @user2.username.should == "someone"
- @user2.email.should == "example@example.com"
- @user2.slug.should == "someone"
+ @user2 = User.find_by_email('user1@example.com')
+ @user2.username.should == "user1"
+ @user2.email.should == "user1@example.com"
+ @user2.slug.should == "user1"
@user2.encrypted_password.should_not be_nil
end
@@ -31,18 +26,14 @@ describe 'user' do
end
it 'should stringify as the username' do
- @user.to_s.should == 'someone'
- "#{@user}".should == 'someone'
+ @user.to_s.should == 'user1'
+ "#{@user}".should == 'user1'
end
end
context 'no TOS agreement' do
before(:each) do
- @user = User.create(
- :email => "example@example.com",
- :username => "someone",
- :password => "irrelevant"
- )
+ @user = FactoryGirl.build(:no_tos_user)
end
it "should refuse to save a user who hasn't agreed to the TOS" do
diff --git a/spec/views/crops/edit.html.haml_spec.rb b/spec/views/crops/edit.html.haml_spec.rb
index c400c83a0..e513f8d8e 100644
--- a/spec/views/crops/edit.html.haml_spec.rb
+++ b/spec/views/crops/edit.html.haml_spec.rb
@@ -14,7 +14,7 @@ describe "crops/edit" do
context "logged in" do
before(:each) do
- @user = FactoryGirl.create(:confirmed_user)
+ @user = FactoryGirl.create(:user)
sign_in @user
render
end
diff --git a/spec/views/crops/new.html.haml_spec.rb b/spec/views/crops/new.html.haml_spec.rb
index d92ef4fb0..47c41b90b 100644
--- a/spec/views/crops/new.html.haml_spec.rb
+++ b/spec/views/crops/new.html.haml_spec.rb
@@ -15,7 +15,7 @@ describe "crops/new" do
context "logged in" do
before(:each) do
- @user = FactoryGirl.create(:confirmed_user)
+ @user = FactoryGirl.create(:user)
sign_in @user
render
end
diff --git a/spec/views/gardens/edit.html.haml_spec.rb b/spec/views/gardens/edit.html.haml_spec.rb
index 738616758..6533de89d 100644
--- a/spec/views/gardens/edit.html.haml_spec.rb
+++ b/spec/views/gardens/edit.html.haml_spec.rb
@@ -11,17 +11,9 @@ describe "gardens/edit" do
context "logged in" do
before(:each) do
- @user = User.create(:email => "growstuff@example.com",
- :password => "irrelevant")
- @user.confirm!
+ @user = FactoryGirl.create(:user)
sign_in @user
-
- @garden = assign(:garden, stub_model(Garden,
- :name => "MyString",
- :user_id => @user.id,
- :slug => "MyString"
- ))
-
+ @garden = assign(:garden, FactoryGirl.create(:garden, :user => @user))
render
end
diff --git a/spec/views/gardens/index.html.haml_spec.rb b/spec/views/gardens/index.html.haml_spec.rb
index 6da0c96f7..d657a8970 100644
--- a/spec/views/gardens/index.html.haml_spec.rb
+++ b/spec/views/gardens/index.html.haml_spec.rb
@@ -2,25 +2,17 @@ require 'spec_helper'
describe "gardens/index" do
before(:each) do
+ @user = FactoryGirl.create(:user)
assign(:gardens, [
- stub_model(Garden,
- :name => "Name",
- :user_id => "",
- :slug => "Slug"
- ),
- stub_model(Garden,
- :name => "Name",
- :user_id => "",
- :slug => "Slug"
- )
+ FactoryGirl.create(:garden, :user => @user),
+ FactoryGirl.create(:garden, :user => @user)
])
end
it "renders a list of gardens" do
render
# Run the generator again with the --webrat flag if you want to use webrat matchers
- assert_select "tr>td", :text => "Name".to_s, :count => 2
- assert_select "tr>td", :text => "".to_s, :count => 2
- assert_select "tr>td", :text => "Slug".to_s, :count => 2
+ assert_select "tr>td", :text => "My Garden".to_s, :count => 2
end
+
end
diff --git a/spec/views/gardens/new.html.haml_spec.rb b/spec/views/gardens/new.html.haml_spec.rb
index aca4be29e..a7cc596ab 100644
--- a/spec/views/gardens/new.html.haml_spec.rb
+++ b/spec/views/gardens/new.html.haml_spec.rb
@@ -2,11 +2,7 @@ require 'spec_helper'
describe "gardens/new" do
before(:each) do
- assign(:garden, stub_model(Garden,
- :name => "MyString",
- :user_id => "",
- :slug => "MyString"
- ).as_new_record)
+ assign(:garden, FactoryGirl.create(:garden))
end
it "renders new garden form" do
diff --git a/spec/views/gardens/show.html.haml_spec.rb b/spec/views/gardens/show.html.haml_spec.rb
index 6e73eb0a9..a2d20875e 100644
--- a/spec/views/gardens/show.html.haml_spec.rb
+++ b/spec/views/gardens/show.html.haml_spec.rb
@@ -2,17 +2,8 @@ require 'spec_helper'
describe "gardens/show" do
before(:each) do
- @user = User.create(
- :username => 'foo',
- :email => 'foo@example.com',
- :password => 'irrelevant',
- :tos_agreement => true
- )
- @user.confirm!
- @garden = assign(:garden, stub_model(Garden,
- :name => "Garden Name",
- :user_id => @user.id
- ))
+ @user = FactoryGirl.create(:user)
+ @garden = assign(:garden, FactoryGirl.create(:garden, :user => @user))
end
context 'logged out' do
diff --git a/spec/views/members/index.html.haml_spec.rb b/spec/views/members/index.html.haml_spec.rb
index 85fd35fbf..e3c267fa4 100644
--- a/spec/views/members/index.html.haml_spec.rb
+++ b/spec/views/members/index.html.haml_spec.rb
@@ -3,18 +3,8 @@ require 'spec_helper'
describe "members/index" do
before(:each) do
assign(:members, [
- User.create!(
- :username => "Marmaduke Blundell-Hollinshead-Blundell-Tolemache-Plantagenet-Whistlebinkie, 3rd Duke of Marmoset",
- :password => "ilikehorses",
- :email => "binky@example.com",
- :tos_agreement => true
- ),
- User.create!(
- :username => "bob",
- :password => "password",
- :email => "bob@example.com",
- :tos_agreement => true
- )
+ FactoryGirl.create(:user),
+ FactoryGirl.create(:long_name_user)
])
render
end
@@ -24,10 +14,10 @@ describe "members/index" do
end
it "does not truncate short names" do
- rendered.should contain "bob"
- rendered.should_not contain "bob..."
+ rendered.should contain "user1"
+ rendered.should_not contain "user1..."
end
-
+
it "counts the number of members" do
rendered.should contain "Displaying 2 members"
end
@@ -35,5 +25,5 @@ describe "members/index" do
it "contains two gravatar icons" do
assert_select "img", :src => /gravatar\.com\/avatar/, :count => 2
end
-
+
end
diff --git a/spec/views/members/show.html.haml_spec.rb b/spec/views/members/show.html.haml_spec.rb
index 3773192f8..be1483e6b 100644
--- a/spec/views/members/show.html.haml_spec.rb
+++ b/spec/views/members/show.html.haml_spec.rb
@@ -1,15 +1,12 @@
require 'spec_helper'
describe "members/show" do
+
before(:each) do
- @member = User.create!(
- :username => "pie",
- :password => "steak&kidney",
- :email => "steak-and-kidney@pie.com",
- :tos_agreement => true
- )
+ @member = FactoryGirl.create(:user)
@time = @member.created_at
- @member.gardens.create(:name => 'My Garden', :user_id => @member.id)
+
+ # need @garden to render the page
@garden = Garden.new
render
end
@@ -23,4 +20,32 @@ describe "members/show" do
assert_select "img", :src => /gravatar\.com\/avatar/
end
+ context "no gardens" do
+ it "shouldn't mention the name of a garden" do
+ rendered.should_not contain "My Garden"
+ end
+ end
+
+ context "signed in user" do
+ before(:each) do
+ sign_in @member
+ render
+ end
+
+ it "contains a 'New Garden' link" do
+ assert_select "a[href=#garden_new]", :text => "New Garden"
+ end
+ end
+
+ context "user has a garden" do
+ before(:each) do
+ @member.gardens.create(:name => 'My Garden', :user_id => @member.id)
+ render
+ end
+
+ it "displays a garden, if the user has one" do
+ rendered.should contain "My Garden"
+ end
+ end
+
end
diff --git a/spec/views/plantings/edit.html.haml_spec.rb b/spec/views/plantings/edit.html.haml_spec.rb
index ad48f1570..27d27f977 100644
--- a/spec/views/plantings/edit.html.haml_spec.rb
+++ b/spec/views/plantings/edit.html.haml_spec.rb
@@ -18,20 +18,12 @@ describe "plantings/edit" do
)
@wrong_user.confirm!
- @garden = assign(:garden, stub_model(Garden,
- :id => 1,
- :user => @right_user,
- :name => "Blah"
- ))
- @planting = assign(:planting, stub_model(Planting,
- :garden_id => 1,
- :crop_id => 1,
- :quantity => 1,
- :description => "MyText"
- ))
+ @crop = FactoryGirl.create(:crop)
+ @garden = FactoryGirl.create(:garden, :user => @right_user)
- assign(:crop, Crop.new)
- assign(:garden, Garden.new)
+ @planting = assign(:planting,
+ FactoryGirl.create(:planting, :garden => @garden, :crop => @crop)
+ )
end
@@ -61,9 +53,6 @@ describe "plantings/edit" do
end
it "renders the edit planting form" do
- render
-
- # Run the generator again with the --webrat flag if you want to use webrat matchers
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]"
diff --git a/spec/views/plantings/index.html.haml_spec.rb b/spec/views/plantings/index.html.haml_spec.rb
index a56770400..2f259bb2f 100644
--- a/spec/views/plantings/index.html.haml_spec.rb
+++ b/spec/views/plantings/index.html.haml_spec.rb
@@ -2,38 +2,20 @@ require 'spec_helper'
describe "plantings/index" do
before(:each) do
- @user = assign(:user, stub_model(User,
- :id => 23,
- :username => 'blah',
- :password => 'blahblah',
- :tos_agreement => true
- ))
- @garden = assign(:garden, stub_model(Garden,
- :id => 42,
- :user => @user,
- :name => "My Awesome Allotment"
- ))
- @crop = assign(:crop, stub_model(Crop,
- :id => 98,
- :system_name => "Tomato"
- ))
- @crop2 = assign(:crop, stub_model(Crop,
- :id => 99,
- :system_name => "Maize"
- ))
- assign(:recent_plantings, [ stub_model(Planting,
+ @user = FactoryGirl.create(:user)
+ @garden = FactoryGirl.create(:garden, :user => @user)
+ @tomato = FactoryGirl.create(:tomato)
+ @maize = FactoryGirl.create(:maize)
+ assign(:recent_plantings, [
+ FactoryGirl.create(:planting,
:garden => @garden,
- :crop => @crop,
- :planted_at => '2008-01-05 12:34:56',
- :quantity => 3,
- :description => "MyText *ITALIC*",
- :created_at => Time.now
+ :crop => @tomato
),
- stub_model(Planting,
+ FactoryGirl.create(:planting,
:garden => @garden,
- :crop => @crop2,
+ :crop => @maize,
:description => '',
- :created_at => Time.now
+ :planted_at => '2013-01-13 01:25:34'
)
])
render
@@ -42,11 +24,11 @@ describe "plantings/index" do
it "renders a list of plantings" do
rendered.should contain 'Tomato'
rendered.should contain 'Maize'
- rendered.should contain "blah's My Awesome Allotment"
+ rendered.should contain "user1's My Garden"
end
it "shows descriptions where they exist" do
- rendered.should contain "MyText"
+ rendered.should contain "This is a"
end
it "shows filler when there is no description" do
@@ -54,11 +36,11 @@ describe "plantings/index" do
end
it "displays planting time" do
- rendered.should contain '2008-01-05 12:34:56'
+ rendered.should contain '2013-01-13 01:25:34'
end
it "renders markdown in the description" do
- assert_select "em", "ITALIC"
+ assert_select "em", "really"
end
end
diff --git a/spec/views/plantings/new.html.haml_spec.rb b/spec/views/plantings/new.html.haml_spec.rb
index 848a1961f..468b3d067 100644
--- a/spec/views/plantings/new.html.haml_spec.rb
+++ b/spec/views/plantings/new.html.haml_spec.rb
@@ -2,12 +2,16 @@ require 'spec_helper'
describe "plantings/new" do
before(:each) do
- assign(:planting, stub_model(Planting,
- :garden_id => 1,
- :crop_id => 1,
- :quantity => 1,
- :description => "MyText"
- ).as_new_record)
+ @user = FactoryGirl.create(:user)
+
+ # create gardens and crops to populate dropdowns
+ @garden1 = FactoryGirl.create(:garden, :user => @user, :name => 'Garden1')
+ @garden2 = FactoryGirl.create(:garden, :user => @user, :name => 'Garden2')
+ @crop1 = FactoryGirl.create(:tomato)
+ @crop2 = FactoryGirl.create(:maize)
+
+ assign(:planting, FactoryGirl.create(:planting, :garden => @garden1))
+
end
context "logged out" do
@@ -19,37 +23,9 @@ describe "plantings/new" do
context "logged in" do
before(:each) do
- @user = User.create(:email => "growstuff@example.com",
- :password => "irrelevant")
- @user.confirm!
sign_in @user
-
- # create gardens and crops to populate dropdowns
- @garden1 = Garden.create!(
- :user_id => @user.id,
- :name => 'Garden1'
- )
- @garden2 = Garden.create!(
- :user_id => @user.id,
- :name => 'Garden2'
- )
-
- @crop1 = Crop.create!(
- :system_name => 'Tomato',
- :en_wikipedia_url => 'http://blah'
- )
- @crop2 = Crop.create!(
- :system_name => 'Corn',
- :en_wikipedia_url => 'http://blah'
- )
- @crop3 = Crop.create!(
- :system_name => 'Chard',
- :en_wikipedia_url => 'http://blah'
- )
-
assign(:crop, @crop2)
assign(:garden, @garden2)
-
render
end
diff --git a/spec/views/plantings/show.html.haml_spec.rb b/spec/views/plantings/show.html.haml_spec.rb
index 13640d4f9..1af1abab9 100644
--- a/spec/views/plantings/show.html.haml_spec.rb
+++ b/spec/views/plantings/show.html.haml_spec.rb
@@ -2,39 +2,24 @@ require 'spec_helper'
describe "plantings/show" do
before(:each) do
- @user = assign(:user, stub_model(User,
- :id => 23,
- :username => 'blah',
- :password => 'blahblah',
- :tos_agreement => true
- ))
- @garden = assign(:garden, stub_model(Garden,
- :id => 42,
- :user => @user,
- :name => "My Awesome Allotment"
- ))
- @crop = assign(:crop, stub_model(Crop,
- :id => 99,
- :system_name => "Tomato"
- ))
- @planting = assign(:planting, stub_model(Planting,
- :garden => @garden,
- :crop => @crop,
- :quantity => 333,
- :description => "MyText *ITALIC*"
- ))
+ @user = FactoryGirl.create(:user)
+ @garden = FactoryGirl.create(:garden, :user => @user)
+ @crop = FactoryGirl.create(:tomato)
+ @planting = assign(:planting,
+ FactoryGirl.create(:planting, :garden => @garden, :crop => @crop)
+ )
render
end
it "renders the quantity planted" do
- rendered.should match(/333/)
+ rendered.should match(/3/)
end
it "renders the description" do
- rendered.should match(/MyText/)
+ rendered.should match(/This is a/)
end
it "renders markdown in the description" do
- assert_select "em", "ITALIC"
+ assert_select "em", "really"
end
end
diff --git a/spec/views/scientific_names/edit.html.haml_spec.rb b/spec/views/scientific_names/edit.html.haml_spec.rb
index 938f88c09..541136fcb 100644
--- a/spec/views/scientific_names/edit.html.haml_spec.rb
+++ b/spec/views/scientific_names/edit.html.haml_spec.rb
@@ -16,7 +16,7 @@ describe "scientific_names/edit" do
context "logged in" do
before(:each) do
- @user = FactoryGirl.create(:confirmed_user)
+ @user = FactoryGirl.create(:user)
sign_in @user
render
end
diff --git a/spec/views/scientific_names/new.html.haml_spec.rb b/spec/views/scientific_names/new.html.haml_spec.rb
index 8d79f0d0c..9db18fa8d 100644
--- a/spec/views/scientific_names/new.html.haml_spec.rb
+++ b/spec/views/scientific_names/new.html.haml_spec.rb
@@ -14,7 +14,7 @@ describe "scientific_names/new" do
context "logged in" do
before(:each) do
- @user = FactoryGirl.create(:confirmed_user)
+ @user = FactoryGirl.create(:user)
sign_in @user
render
end
diff --git a/spec/views/updates/edit.html.haml_spec.rb b/spec/views/updates/edit.html.haml_spec.rb
index 14ee25f2c..1d7c28d90 100644
--- a/spec/views/updates/edit.html.haml_spec.rb
+++ b/spec/views/updates/edit.html.haml_spec.rb
@@ -2,12 +2,8 @@ require 'spec_helper'
describe "updates/edit" do
before(:each) do
- @update = assign(:update, stub_model(Update,
- :user_id => 1,
- :subject => "MyString",
- :body => "MyText",
- :created_at => Time.now
- ))
+ @user = FactoryGirl.create(:user)
+ @update = assign(:update, FactoryGirl.create(:update, :user => @user))
end
context "logged out" do
@@ -19,16 +15,11 @@ describe "updates/edit" do
context "logged in" do
before(:each) do
- @user = User.create(:email => "growstuff@example.com",
- :password => "irrelevant")
- @user.confirm!
sign_in @user
render
end
it "renders the edit update form" do
- render
-
assert_select "form", :action => updates_path(@update), :method => "post" do
assert_select "input#update_subject", :name => "update[subject]"
assert_select "textarea#update_body", :name => "update[body]"
diff --git a/spec/views/updates/index.html.haml_spec.rb b/spec/views/updates/index.html.haml_spec.rb
index 7ee885924..03552126d 100644
--- a/spec/views/updates/index.html.haml_spec.rb
+++ b/spec/views/updates/index.html.haml_spec.rb
@@ -2,34 +2,18 @@ require 'spec_helper'
describe "updates/index" do
before(:each) do
- user = User.create!(
- :username => "test_user",
- :email => "test@growstuff.org",
- :password => "password",
- :tos_agreement => true
- )
- assign(:updates, [
- stub_model(Update,
- :user_id => user.id,
- :subject => "Subject",
- :body => "MyText",
- :created_at => Time.now
- ),
- stub_model(Update,
- :user_id => user.id,
- :subject => "Subject",
- :body => "MyText",
- :created_at => Time.now
- )
- ])
+ @member = FactoryGirl.create(:user)
+ @update1 = FactoryGirl.build(:update, :user => @member)
+ @update2 = FactoryGirl.build(:update, :user => @member)
+ assign(:updates, [@update1, @update2])
render
end
it "renders a list of updates" do
assert_select "div.update", :count => 2
- assert_select "h3", :text => "Subject".to_s, :count => 2
+ assert_select "h3", :text => "An Update".to_s, :count => 2
assert_select "div.update-body",
- :text => "MyText".to_s, :count => 2
+ :text => "This is some text.".to_s, :count => 2
end
it "counts the number of updates" do
diff --git a/spec/views/updates/new.html.haml_spec.rb b/spec/views/updates/new.html.haml_spec.rb
index 84d3ed429..611a4a7e3 100644
--- a/spec/views/updates/new.html.haml_spec.rb
+++ b/spec/views/updates/new.html.haml_spec.rb
@@ -2,11 +2,8 @@ require 'spec_helper'
describe "updates/new" do
before(:each) do
- assign(:update, stub_model(Update,
- :user_id => 1,
- :subject => "MyString",
- :body => "MyText"
- ).as_new_record)
+ @user = FactoryGirl.create(:user)
+ assign(:update, FactoryGirl.create(:update, :user => @user))
end
context "logged out" do
@@ -18,9 +15,6 @@ describe "updates/new" do
context "logged in" do
before(:each) do
- @user = User.create(:email => "growstuff@example.com",
- :password => "irrelevant")
- @user.confirm!
sign_in @user
render
end
diff --git a/spec/views/updates/show.html.haml_spec.rb b/spec/views/updates/show.html.haml_spec.rb
index a35266b52..796074a9a 100644
--- a/spec/views/updates/show.html.haml_spec.rb
+++ b/spec/views/updates/show.html.haml_spec.rb
@@ -2,55 +2,35 @@ require 'spec_helper'
describe "updates/show" do
before(:each) do
- @user = User.create!(
- :username => "test_user",
- :email => "test@example.com",
- :password => "password",
- :tos_agreement => true
- )
+ @user = FactoryGirl.create(:user)
end
it "renders the post" do
- @update = assign(:update, stub_model(Update,
- :user_id => @user.id,
- :subject => "Subject",
- :body => "MyText"
- ))
+ @update = assign(:update,
+ FactoryGirl.create(:update, :user => @user))
render
- rendered.should match(/test_user/)
+ # show the name of the member who posted the update
+ rendered.should match(/user1/)
# Subject goes in title
- rendered.should match(/MyText/)
+ rendered.should match(/This is some text./)
+ # shouldn't show the subject on a single post page
+ # (it appears in the title/h1 via the layout, not via this view)
+ rendered.should_not match(/An Update/)
end
it "should parse markdown into html" do
- @update = assign(:update, stub_model(Update,
- :user_id => @user.id,
- :subject => "Subject",
- :body => "**strong**"
- ))
+ @update = assign(:update,
+ FactoryGirl.create(:markdown_update, :user => @user))
render
- rendered.should match(/strong<\/strong>/)
+ assert_select "strong", "strong"
end
it "shouldn't let html through in body" do
- @update = assign(:update, stub_model(Update,
- :user_id => @user.id,
- :subject => "Subject",
- :body => 'EVIL'
- ))
+ @update = assign(:update,
+ FactoryGirl.create(:html_update, :user => @user))
render
rendered.should match(/EVIL/)
rendered.should_not match(/a href="http:\/\/evil.com"/)
end
- it "shouldn't show the subject on the single update page" do
- @update = assign(:update, stub_model(Update,
- :user_id => @user.id,
- :subject => "Subject",
- :body => 'EVIL'
- ))
- render
- rendered.should_not match(/Subject/)
- end
-
end