Ruby on Rails Tutorial Chapter 8 Signup Success -



Ruby on Rails Tutorial Chapter 8 Signup Success -

i have written users controller , spec tests correctly "successful creation" in user controller next 2 errors:

1) userscontroller post 'create' success should create user failure/error: lambda count should have been changed 1, changed 0 # ./spec/controllers/users_controller_spec.rb:95:in `block (4 levels) in <top (required)>' 2) userscontroller post 'create' success should redirect user show page failure/error: response.should redirect_to(user_path(assigns(:user))) actioncontroller::routingerror: no route matches {:action=>"show", :controller=>"users", :id=>#<user id: nil, name: "new user", email: "user@example.com", created_at: nil, updated_at: nil, encrypted_password: nil, salt: nil>} # ./spec/controllers/users_controller_spec.rb:102:in `block (4 levels) in <top (required)>'

the test specs follows:

describe "success" before (:each) @attr = { :name => "new user" , :email => "user@example.com", :password => "foobar", :password_confirmation => "foobar" } end "should create user" lambda post :create, :user => @attr end.should change(user, :count).by(1) end "should redirect user show page" post :create, :user => @attr response.should redirect_to(user_path(assigns(:user))) end "should have welcome message" post :create, :user => @attr flash[:success].should =~ /welcome sample app/i end end end

the controller code follows:

class userscontroller < applicationcontroller def show @user = user.find(params[:id]) @title = @user.name end def new @user = user.new @title = "sign up" end def create @user = user.new(params[:user]) if @user.save redirect_to @user, :flash => { :success => "welcome sample app!" } else @title = "sign up" render 'new' end end end

i'm getting 1 new error:

3) userscontroller post 'create' success should have welcome message

failure/error: flash[:success].should =~ /welcome sample app/i expected: /welcome sample app/i got: nil (using =~) # ./spec/controllers/users_controller_spec.rb:107:in `block (4 levels) in <top (required)>'

here's user model code:

class user < activerecord::base attr_accessor :password attr_accessible :name, :email, :password, :password_confirmation email_regex = /\a[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i validates :name, :presence => true, :length => {:maximum => 50} validates :email, :presence => true, :format => {:with => email_regex}, :uniqueness => {:case_sensitive => false} validates :password, :presence => true, :confirmation => true, :length => {:within => 6..40} before_save :encrypt_password def has_password?(submitted_password) encrypted_password == encrypt(submitted_password) end class << self def authenticate(email, submitted_password) user = user.find_by_email(email) homecoming nil if user.nil? homecoming user if user.has_password?(submitted_password) end end

what's going wrong?

i having same problem , me problem email. changed , tests worked again.

ruby-on-rails

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -