I have been following a tutorial from a (semi-outdated) textbook
describing how to create a rails social networking app. I have reached
the testing phase and have encountered an error I can't seem to solve.
It originates from an asset call in the site_controller_test.rb file.

Error message:

1) Failure:
test_registration_success<SiteControllerTest> [test/functional/
site_controller_test.rb:49]:
<nil> expected to not be nil.

4 tests, 9 assertions, 1 failures, 0 errors

site_controller_test.rb:

require File.dirname(__FILE__) + '/../test_helper'
require 'site_controller'


# Re-raise errors caught by the controller.
class SiteController; def rescue_action(e) raise e end; end

class SiteControllerTest < ActionController::TestCase
        def setup
                @controller = SiteController.new
                @request = ActionController::TestRequest.new
                @response = ActionController::TestResponse.new
        end
        # Replace this with your real tests.
        def test_truth
                assert true
        end

        def test_index
                get :index
                title = assigns(:title)
                assert_equal "The Water Cooler Site", title
                assert_response :success
                assert_template "index"
        end

        # Make sure the registration page responds with the proper form.
        def test_registration_page
                get :register
                title = assigns(:title)
                assert_equal "Registration Page", title
                assert_response :success
                assert_template "register"
        end


        # Test a valid registration.
        def test_registration_success
                post :register, :user=>{        :user_name => "rayjay6295",
                                                                        :email 
=> "[email protected]",
                                                                        
:password => "password"}
                # Test assignment of user.
                user = assigns(:user)
                assert_not_nil user
                # Test new user in database.

                new_user = User.find_by_user_name_and_password(user.user_name,
                                                                                
                                user.password)
                assert_not_nil new_user
                assert_equal new_user, user
                # Test flash and redirect.
                assert_equal "User #{new_user.user_name} created!", 
flash[:notice]
                assert_redirected_to :action => "index"
        end
end

////////////////////////////////////////////////////////////////////

site_controller.rb:

class SiteController < ApplicationController
  def index
        @title= "The Water Cooler Site"
  end

  def personal_page
        @title = "Welcome, YOUR NAME HERE"
  end

        def register
                @title = "Registration Page"
                if request.post?
                        @user = User.new(params[:user])
                        if @user.save
                                flash[:notice] = "User #[email protected]_name} 
created!"
                                redirect_to :action => "index"
                        end
                end
                if request.post?
                        # Output goes to log file (logs/development.log in 
development
mode)
                        logger.info params[:user].inspect
                end
                #if request.post?
                        #Output goes to browser
                        #raise params[:user].inspect
                #end
        end


        protect_from_forgery :only => [:create, :update, :destroy]
end
/////////////////////////////////////////////

from databse.yml:

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: watercooler_development
  pool: 5
  username: root
  password: MyNewPass
  host: localhost

test:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: watercooler_test
  pool: 5
  username: root
  password: MyNewPass
  host: localhost

///////////////////////////////////////////

create_users.rb:

class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
                t.column :user_name, :string
                t.column :first_name, :string
                t.column :last_name, :string
                t.column :fav_show, :string
                t.column :email, :string
                t.column :password, :string
                t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end
///////////////////////////////////////////////////

register.html.erb:

<h2>Register</h2>
<% form_for :user do |form| %>
        <fieldset>
                <legend>Enter Your Details</legend>
                <%= error_messages_for "user" %>
                <div class="form_row">
                        <label for="user_name">User Name:</label>
                        <%= form.text_field :user_name, :size =>
User::USER_NAME_SIZE, :maxlength => 40 %>
                </div>
                <div class="form_row">
                        <label for="email">Email:</label>
                        <%= form.text_field :email, :size => User::EMAIL_SIZE, 
:maxlength
=> 50 %>
                </div>
                <!-- Need password compare stuff -->
                <div class="form_row">
                        <label for="password">Password:</label>
                        <%= form.password_field :password, :size =>
User::PASSWORD_SIZE, :maxlength => 40 %>
                </div>
                <!-- Need password compare stuff -->
                <div class="form_row">
                        <label for="password">Re-type Password:</label>
                        <%= form.password_field :password, :size =>
User::PASSWORD_SIZE, :maxlength => 40 %>
                </div>

                <div class="form_row">
                        <label for="first_name">First Name:</label>
                        <%= form.text_field :first_name, :size =>
User::FIRST_NAME_SIZE, :maxlength => 40 %>
                </div>

                <div class="form_row">
                        <label for="last_name">Last Name:</label>
                        <%= form.text_field :last_name, :size =>
User::LAST_NAME_SIZE, :maxlength => 40 %>
                </div>

                <div class="form_row">
                        <label for="user_name">Favorite TV Show:</label>
                        <%= form.text_field :fav_show, :size =>
User::FAV_SHOW_SIZE, :maxlength => 40 %>
                </div>

                <div class="button">
                        <%= submit_tag "Register!", :class => "submit" %>
                </div>
        </fieldset>
<% end %>

////////////////////////////////////

Thanks for any help. It seems like it can retrieve a user from the
post method fine, but once it tries to either insert or pull from the
database it runs into trouble.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to