assert_valid in unit tests after upgrade to rails 2.3 doesn't work

def test_valid     assert_valid State.first   end

Error: test_valid(StateTest): NoMethodError: undefined method `assert_valid' for #<StateTest: 0x7f0d60750318>

I see that test_valid is now in ActionController::Assertions::ModelAssertions. Does this mean that test_valid is designed to be used i ActionController tests only?

I can change my assert_valid(State.first) into assert (State.first.valid?) but assert_valid prints meaninful failure messages, unlike assert which just tells me "nil is not true". How can I use assert_valid in my unit tests? My test classes declared something like this: class StateTest < ActiveSupport::TestCase

Having the same problem here. But still didn't find any solution.

hi,

just upgrading to 2.3.2 and getting same, did you resolve this at all?

Tonypm

Ok, so

Rails Guide Testing Rails Applications — Ruby on Rails Guides para 3.5 says it exists - I guess the guide needs amending?

It was deprecated at 2.2.2 - "assert_valid is deprecated. Use assert record.valid? instead" see http://github.com/rails/rails/commit/d4754677a34d34d4a0955a04f2cc6571bdc5e82d and https://rails.lighthouseapp.com/projects/8994/tickets/1470-assert_valid-undefined-in-edge-activesupporttestcase

I didnt want to go change all my tests just at the moment, so putting assert_valid in my test_helper gets me over that for the moment. Bit of a time waster, since I was going from 2.0.2 to 2.3 so had not seen the dep error.

def assert_valid(record)   assert record.valid?, record.errors.full_messages.join("\n") end

Tonypm