functional
functional/account_controller_test.rb
functional/admin_controller_test.rb
functional/ads_controller_test.rb
functional/main_controller_test.rb
test_helper.rb
unit
unit/ad_test.rb
unit/author_test.rb
unit/category_test.rb
unit/mailman_test.rb
unit/parent_category_test.rb
unit/user_test.rb

-

/functional/account_controller_test.rb

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

require 'account_controller'

class AccountController; def rescue_action(e) raise e end; end

class AccountControllerTest < Test::Unit::TestCase

include AuthenticatedTestHelper

fixtures :users

def setup

@controller AccountController.new

@request ActionController::TestRequest.new

@response ActionController::TestResponse.new

end

def test_should_login_and_redirect

post :login, :email > 'quentin@example.com', :password > 'test'

assert session[:user]

assert_response :redirect

end

def test_should_fail_login_and_not_redirect

post :login, :example > 'quentin@example', :password > 'bad password'

assert_nil session[:user]

assert_response :success

end

def test_should_allow_signup

assert_difference User, :count do

create_user

assert_response :redirect

end

end

def test_should_require_password_on_signup

assert_no_difference User, :count do

create_user(:password > nil)

assert assigns(:user).errors.on(:password)

assert_response :success

end

end

def test_should_require_password_confirmation_on_signup

assert_no_difference User, :count do

create_user(:password_confirmation > nil)

assert assigns(:user).errors.on(:password_confirmation)

assert_response :success

end

end

def test_should_require_email_on_signup

assert_no_difference User, :count do

create_user(:email > nil)

assert assigns(:user).errors.on(:email)

assert_response :success

end

end

def test_should_logout

login_as :quentin

get :logout

assert_nil session[:user]

assert_response :redirect

end

def test_should_remember_me

post :login, :email > 'quentin@example.com', :password > 'test', :remember_me > "1"

assert_not_nil @response.cookies["auth_token"]

end

def test_should_not_remember_me

post :login, :email > 'quentin@example.com', :password > 'test', :remember_me > "0"

assert_nil @response.cookies["auth_token"]

end

def test_should_delete_token_on_logout

login_as :quentin

get :logout

assert_equal @response.cookies["auth_token"], []

end

def test_should_login_with_cookie

users(:quentin).remember_me

@request.cookies["auth_token"] cookie_for(:quentin)

get :index

assert @controller.send(:logged_in?)

end

def test_should_fail_expired_cookie_login

users(:quentin).remember_me

users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago

@request.cookies["auth_token"] cookie_for(:quentin)

get :index

assert !@controller.send(:logged_in?)

end

def test_should_fail_cookie_login

users(:quentin).remember_me

@request.cookies["auth_token"] auth_token('invalid_auth_token')

get :index

assert !@controller.send(:logged_in?)

end

protected

def create_user(options {})

post :signup, :user > { :email > 'quire@example.com',

:password > 'quire', :password_confirmation > 'quire' }.merge(options)

end

def auth_token(token)

CGI::Cookie.new('name' > 'auth_token', 'value' > token)

end

def cookie_for(user)

auth_token users(user).remember_token

end

end

-

/functional/admin_controller_test.rb

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

class AdminControllerTest < ActionController::TestCase

def test_truth

assert true

end

end

-

/functional/ads_controller_test.rb

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

class AdsControllerTest < ActionController::TestCase

def test_ad_post_and_email_sent

get :new, {:category > 1, :title > 'test', :ad > 'test ad'}

assert_response :success

end

def test_url_click_activates_post

assert true

end

end

-

/functional/main_controller_test.rb

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

class MainControllerTest < ActionController::TestCase

def test_truth

assert true

end

end

-

/test_helper.rb

ENV["RAILS_ENV"] "test"

require File.expand_path(File.dirname(__FILE__) + "/../config/environment")

require 'test_help'

class Test::Unit::TestCase

self.use_transactional_fixtures true

self.use_instantiated_fixtures false

fixtures :all

end

-

/unit/ad_test.rb

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

class ClassifiedAdTest < ActiveSupport::TestCase

def test_ad_creation

ad Ad.create(:title > ads(:test_one).title)

assert ad.valid?

assert_equal(ads(:test_one).title, ad.title)

assert_equal(false, ad.active)

assert !ad.activation_hash.nil?

end

def test_email_generation_is_working

ad Ad.create(:title > ads(:test_one).title)

assert ad.valid?

assert_match(/^\d{18}@(chuckslist.com)$/i, ad.email)

end

def test_no_clash_in_generated_email_address

for count in (1..10000)

ad1 Ad.create(:title > 'Ad1')

ad2 Ad.create(:title > 'Ad2')

assert_not_equal(ad1.email, ad2.email)

end

end

def test_created_ads

end

end

-

/unit/author_test.rb

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

class AuthorTest < ActiveSupport::TestCase

def test_truth

assert true

end

end

-

/unit/category_test.rb

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

class CategoryTest < ActiveSupport::TestCase

def test_truth

assert true

end

end

-

/unit/mailman_test.rb

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

class MailmanTest < ActionMailer::TestCase

tests Mailman

def test_email_fixture_is_working

email_text read_fixture("test_mail_001").join

assert_match(/jalopy/i, email_text)

end

def test_receive_email_is_working

email_text read_fixture("test_mail_001").join

response Mailman.receive(email_text)

assert_not_equal("200806159145300001@chuckslist.com", response.to[0])

assert_equal("quentin@example.com", response.to[0])

assert_equal("drspin_2003@hotmail.com", response.from[0])

assert_match(/jalopy/i, response.body)

assert_match(/Email delivered by Chuckslist/i, response.body)

end

def test_fake_email_is_garbaged

email_test read_fixture("test_mail_002").join

response Mailman.receive(email_test)

assert_not_equal("quentin@example.com", response.to[0])

assert_equal("garbage@chuckslist.org", response.to[0])

end

def test_regex_match_reply_to_ad_email

assert_match(/^\d{18}@(chuckslist.com)$/i, "200806159145300001@chuckslist.com")

end

def test_regex_match_ad_activation_email

assert_match(/^([a-zA-Z]{22}@(chuckslist.com))$/i, "abcdefghiJKLmnOPQrstUV@chuckslist.com")

end

def test_ad_confirmation_email_is_sent

end

def test_ad_confirmation_set_true_when_clicked

end

def test_ad_confirmation_email_is_working

end

end

-

/unit/parent_category_test.rb

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

class ParentCategoryTest < ActiveSupport::TestCase

def test_truth

assert true

end

end

-

/unit/user_test.rb

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

class UserTest < Test::Unit::TestCase

include AuthenticatedTestHelper

fixtures :users

def test_should_create_user

assert_difference User, :count do

user create_user

assert !user.new_record?, "#{user.errors.full_messages.to_sentence}"

end

end

def test_should_require_password

assert_no_difference User, :count do

u create_user(:password > nil)

assert u.errors.on(:password)

end

end

def test_should_require_password_confirmation

assert_no_difference User, :count do

u create_user(:password_confirmation > nil)

assert u.errors.on(:password_confirmation)

end

end

def test_should_require_email

assert_no_difference User, :count do

u create_user(:email > nil)

assert u.errors.on(:email)

end

end

def test_should_reset_password

users(:quentin).update_attributes(:password > 'new password', :password_confirmation > 'new password')

assert_equal users(:quentin), User.authenticate('quentin@example.com', 'new password')

end

def test_should_not_rehash_password

users(:quentin).update_attributes(:email > 'quentin2@example.com')

assert_equal users(:quentin), User.authenticate('quentin2@example.com', 'test')

end

def test_should_authenticate_user

assert_equal users(:quentin), User.authenticate('quentin@example.com', 'test')

end

def test_should_set_remember_token

users(:quentin).remember_me

assert_not_nil users(:quentin).remember_token

assert_not_nil users(:quentin).remember_token_expires_at

end

def test_should_unset_remember_token

users(:quentin).remember_me

assert_not_nil users(:quentin).remember_token

users(:quentin).forget_me

assert_nil users(:quentin).remember_token

end

protected

def create_user(options {})

User.create({ :email > 'quire@example.com', :password > 'quire', :password_confirmation > 'quire' }.merge(options))

end

end