require "#{File.dirname(__FILE__)}/../active_record_unit" require 'fixtures/company' class ActiveRecordAssertionsController < ActionController::Base self.template_root = "#{File.dirname(__FILE__)}/../fixtures/" # fail with 1 bad column def nasty_columns_1 @company = Company.new @company.name = "B" @company.rating = 2 render :inline => "snicker...." end # fail with 2 bad columns def nasty_columns_2 @company = Company.new @company.name = "" @company.rating = 2 render :inline => "double snicker...." end # this will pass validation def good_company @company = Company.new @company.name = "A" @company.rating = 69 render :inline => "Goodness Gracious!" end # this will fail validation def bad_company @company = Company.new render :inline => "Who's Bad?" end # the safety dance...... def rescue_action(e) raise; end end class ActiveRecordAssertionsControllerTest < ActiveRecordTestCase fixtures :companies def setup @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new @controller = ActiveRecordAssertionsController.new super 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', %w(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', %w(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 problems with an ActiveRecord def test_invalid_record process :bad_company assert_success assert_invalid_record 'company' end end