1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

added assert_valid to AP

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2635 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
Tobias Lütke 2005-10-16 02:20:53 +00:00
parent 5e5c332c3e
commit 0279949b05
4 changed files with 61 additions and 3 deletions

View file

@ -1,5 +1,7 @@
*SVN*
* Added assert_vaild. Reports the proper AR error messages as fail message when the passed record is invalid [Tobias Luetke]
* Add temporary support for passing locals to render using string keys [Nicholas Seckar]
* Clean up error pages by providing better backtraces [Nicholas Seckar]

View file

@ -283,6 +283,13 @@ module Test #:nodoc:
assert_block(full_message) { expected_dom != actual_dom }
end
end
# ensures that the passed record is valid by active record standards. returns the error messages if not
def assert_valid(record)
clean_backtrace do
assert record.valid?, record.errors.full_messages
end
end
def clean_backtrace(&block)
begin

View file

@ -77,6 +77,41 @@ class ActionPackAssertionsController < ActionController::Base
def raise_on_post
raise "post" if @request.post?
render_text "request method: #{@request.env['REQUEST_METHOD']}"
end
def get_valid_record
@record = Class.new do
def valid?
true
end
def errors
Class.new do
def full_messages; '...stuff...'; end
end.new
end
end.new
render :nothing => true
end
def get_invalid_record
@record = Class.new do
def valid?
false
end
def errors
Class.new do
def full_messages; '...stuff...'; end
end.new
end
end.new
render :nothing => true
end
# 911
@ -420,6 +455,21 @@ class ActionPackAssertionsControllerTest < Test::Unit::TestCase
get :redirect_to_fellow_controller
assert_redirected_to :controller => 'admin/user'
end
def test_assert_valid
get :get_valid_record
assert_valid assigns('record')
end
def test_assert_valid_failing
get :get_invalid_record
begin
assert_valid assigns('record')
assert false
rescue Test::Unit::AssertionFailedError => e
end
end
end
@ -437,4 +487,4 @@ class ActionPackHeaderTest < Test::Unit::TestCase
process :hello_xml_world
assert_equal('application/pdf', @controller.headers['Content-Type'])
end
end
end

View file

@ -75,8 +75,7 @@ class ActiveRecordAssertionsController < ActionController::Base
# the safety dance......
def rescue_action(e) raise; end
end
class ActiveRecordAssertionsControllerTest < Test::Unit::TestCase
def setup
@request = ActionController::TestRequest.new