From bc574a86ac3b19108341af9deb2d23609d44d5c0 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Thu, 17 Feb 2005 19:28:13 +0000 Subject: Skip Active Record tests in Action Pack if the SQLite database cant be brought up git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@652 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../controller/active_record_assertions_test.rb | 210 +++++++++++---------- 1 file changed, 109 insertions(+), 101 deletions(-) (limited to 'actionpack/test/controller') diff --git a/actionpack/test/controller/active_record_assertions_test.rb b/actionpack/test/controller/active_record_assertions_test.rb index 2a005b8586..49db40c5a2 100644 --- a/actionpack/test/controller/active_record_assertions_test.rb +++ b/actionpack/test/controller/active_record_assertions_test.rb @@ -1,120 +1,128 @@ path_to_ar = File.dirname(__FILE__) + '/../../../activerecord' if Object.const_defined?("ActiveRecord") || File.exist?(path_to_ar) -# This test is very different than the others. It requires ActiveRecord to -# run. There's a bunch of stuff we are assuming here: -# -# 1. activerecord exists as a sibling directory to actionpack -# (i.e., actionpack/../activerecord) -# 2. you've created the appropriate database to run the active_record unit tests -# 3. you set the appropriate database connection below - -driver_to_use = 'native_sqlite' - -$: << path_to_ar + '/lib/' -$: << path_to_ar + '/test/' -require 'active_record' unless Object.const_defined?("ActiveRecord") -require "connections/#{driver_to_use}/connection" -require 'fixtures/company' - -# ----------------------------------------------------------------------------- - -# add some validation rules to trip up the assertions -class Company - protected - def validate - errors.add_on_empty('name') - errors.add('rating', 'rating should not be 2') if rating == 2 - errors.add_to_base('oh oh') if rating == 3 - end -end + + # This test is very different than the others. It requires ActiveRecord to + # run. There's a bunch of stuff we are assuming here: + # + # 1. activerecord exists as a sibling directory to actionpack + # (i.e., actionpack/../activerecord) + # 2. you've created the appropriate database to run the active_record unit tests + # 3. you set the appropriate database connection below -# ----------------------------------------------------------------------------- + begin -require File.dirname(__FILE__) + '/../abstract_unit' + driver_to_use = 'native_sqlite' -# a controller class to handle the AR assertions -class ActiveRecordAssertionsController < ActionController::Base - # fail with 1 bad column - def nasty_columns_1 - @company = Company.new - @company.name = "B" - @company.rating = 2 - render_text "snicker...." - end + $: << path_to_ar + '/lib/' + $: << path_to_ar + '/test/' + require 'active_record' unless Object.const_defined?("ActiveRecord") + require "connections/#{driver_to_use}/connection" + require 'fixtures/company' + + # ----------------------------------------------------------------------------- + + # add some validation rules to trip up the assertions + class Company + protected + def validate + errors.add_on_empty('name') + errors.add('rating', 'rating should not be 2') if rating == 2 + errors.add_to_base('oh oh') if rating == 3 + end + end + + # ----------------------------------------------------------------------------- + + require File.dirname(__FILE__) + '/../abstract_unit' + + # a controller class to handle the AR assertions + class ActiveRecordAssertionsController < ActionController::Base + # fail with 1 bad column + def nasty_columns_1 + @company = Company.new + @company.name = "B" + @company.rating = 2 + render_text "snicker...." + end - # fail with 2 bad column - def nasty_columns_2 - @company = Company.new - @company.name = "" - @company.rating = 2 - render_text "double snicker...." - end + # fail with 2 bad column + def nasty_columns_2 + @company = Company.new + @company.name = "" + @company.rating = 2 + render_text "double snicker...." + end - # this will pass validation - def good_company - @company = Company.new - @company.name = "A" - @company.rating = 69 - render_text "Goodness Gracious!" - end + # this will pass validation + def good_company + @company = Company.new + @company.name = "A" + @company.rating = 69 + render_text "Goodness Gracious!" + end - # this will fail validation - def bad_company - @company = Company.new - render_text "Who's Bad?" - end + # this will fail validation + def bad_company + @company = Company.new + render_text "Who's Bad?" + end - # the safety dance...... - def rescue_action(e) raise; end -end + # the safety dance...... + def rescue_action(e) raise; end + end -# ----------------------------------------------------------------------------- + # ----------------------------------------------------------------------------- -ActiveRecordAssertionsController.template_root = File.dirname(__FILE__) + "/../fixtures/" + ActiveRecordAssertionsController.template_root = File.dirname(__FILE__) + "/../fixtures/" -# The test case to try the AR assertions -class ActiveRecordAssertionsControllerTest < Test::Unit::TestCase - # set it up - def setup - @request = ActionController::TestRequest.new - @response = ActionController::TestResponse.new - @controller = ActiveRecordAssertionsController.new - end + # The test case to try the AR assertions + class ActiveRecordAssertionsControllerTest < Test::Unit::TestCase + # set it up + def setup + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + @controller = ActiveRecordAssertionsController.new + end - # test for 1 bad apple column - def test_some_invalid_columns - process :nasty_columns_1 - assert_success - assert_invalid_record 'company' - assert_invalid_column_on_record 'company', 'rating' - assert_valid_column_on_record 'company', 'name' - assert_valid_column_on_record 'company', ['name','id'] - end + # test for 1 bad apple column + def test_some_invalid_columns + process :nasty_columns_1 + assert_success + assert_invalid_record 'company' + assert_invalid_column_on_record 'company', 'rating' + assert_valid_column_on_record 'company', 'name' + assert_valid_column_on_record 'company', ['name','id'] + end - # test for 2 bad apples columns - def test_all_invalid_columns - process :nasty_columns_2 - assert_success - assert_invalid_record 'company' - assert_invalid_column_on_record 'company', 'rating' - assert_invalid_column_on_record 'company', 'name' - assert_invalid_column_on_record 'company', ['name','rating'] - end + # test for 2 bad apples columns + def test_all_invalid_columns + process :nasty_columns_2 + assert_success + assert_invalid_record 'company' + assert_invalid_column_on_record 'company', 'rating' + assert_invalid_column_on_record 'company', 'name' + assert_invalid_column_on_record 'company', ['name','rating'] + end - # ensure we have no problems with an ActiveRecord - def test_valid_record - process :good_company - assert_success - assert_valid_record 'company' - end + # ensure we have no problems with an ActiveRecord + def test_valid_record + process :good_company + assert_success + assert_valid_record 'company' + end - # ensure we have problems with an ActiveRecord - def test_invalid_record - process :bad_company - assert_success - assert_invalid_record 'company' + # ensure we have problems with an ActiveRecord + def test_invalid_record + process :bad_company + assert_success + assert_invalid_record 'company' + end + end + + rescue SqliteError => e + puts "Skipping active record based tests" + puts e.message end -end -end \ No newline at end of file +end -- cgit v1.2.3