Merge pull request #2 from jcaudle/unique_usernames

Unique usernames
This commit is contained in:
Courtney Hazel
2013-02-21 19:11:25 -08:00
10 changed files with 27 additions and 16 deletions

View File

@@ -1,8 +1,9 @@
FactoryGirl.define do
sequence(:email) { |n| "member#{n}@example.com" }
sequence(:login_name) { |n| "member#{n}" }
factory :member, aliases: [:author, :owner] do
login_name 'member1'
login_name { generate(:login_name) }
password 'password1'
email { generate(:email) }
tos_agreement true

View File

@@ -7,7 +7,7 @@ describe Garden do
end
it "should have a slug" do
@garden.slug.should == "member1-springfield-community-garden"
@garden.slug.should match(/member\d+-springfield-community-garden/)
end
it "should have a description" do

View File

@@ -15,13 +15,13 @@ describe 'member' do
@member.save
@member2 = Member.find(@member.id)
@member2.should be_an_instance_of Member
@member2.login_name.should == "member1"
@member2.login_name.should match(/member\d+/)
@member2.encrypted_password.should_not be_nil
end
it 'should have a friendly slug' do
@member.save
@member.slug.should == "member1"
@member.slug.should match(/member\d+/)
end
it 'should have a default garden' do
@@ -35,8 +35,9 @@ describe 'member' do
end
it 'should stringify as the login_name' do
@member.to_s.should == 'member1'
"#{@member}".should == 'member1'
@member.save
@member.to_s.should match(/member\d+/)
"#{@member}".should match(/member\d+/)
end
it 'should be able to fetch posts' do
@@ -67,4 +68,13 @@ describe 'member' do
end
end
context 'same :login_name' do
it "should not allow two members with the same login_name" do
FactoryGirl.create(:member, :login_name => "login-name")
member = FactoryGirl.build(:member, :login_name => "login-name")
member.should_not be_valid
member.errors[:login_name].should include("has already been taken")
end
end
end

View File

@@ -12,15 +12,15 @@ describe Planting do
it "generates an owner" do
@planting.owner.should be_an_instance_of Member
@planting.owner.login_name.should match /^member1$/
@planting.owner.login_name.should match /^member\d+$/
end
it "generates a location" do
@planting.location.should match /^member1's Springfield Community Garden$/
@planting.location.should match /^member\d+'s Springfield Community Garden$/
end
it "should have a slug" do
@planting.slug.should == "member1-springfield-community-garden-tomato"
@planting.slug.should match /^member\d+-springfield-community-garden-tomato$/
end
end

View File

@@ -40,7 +40,7 @@ describe "crops/show" do
it "links to people who are growing this crop" do
render
rendered.should contain "member1"
rendered.should contain /member\d+/
rendered.should contain "Springfield Community Garden"
end

View File

@@ -30,7 +30,7 @@ describe 'layouts/application.html.haml', :type => "view" do
end
it 'should show login name' do
rendered.should contain 'member1'
rendered.should contain /member\d+/
end
it 'should have a "Post" link' do

View File

@@ -14,8 +14,8 @@ describe "members/index" do
end
it "does not truncate short names" do
rendered.should contain "member1"
rendered.should_not contain "member1..."
rendered.should contain /member\d+/
rendered.should_not contain /member\d+\.\.\./
end
it "counts the number of members" do

View File

@@ -11,7 +11,7 @@ describe 'members/show.rss.builder', :type => "view" do
end
it 'shows RSS feed title' do
rendered.should contain "member1's recent posts"
rendered.should contain /member\d+'s recent posts/
end
it 'shows content of posts' do

View File

@@ -25,7 +25,7 @@ describe "plantings/index" do
it "renders a list of plantings" do
rendered.should contain 'Tomato'
rendered.should contain 'Maize'
rendered.should contain "member1's Springfield Community Garden"
rendered.should contain /member\d+'s Springfield Community Garden/
end
it "shows descriptions where they exist" do

View File

@@ -11,7 +11,7 @@ describe "posts/show" do
FactoryGirl.create(:post, :author => @author))
render
# show the name of the member who posted the post
rendered.should match(/member1/)
rendered.should match(/member\d+/)
# Subject goes in title
rendered.should match(/This is some text./)
# shouldn't show the subject on a single post page