Hi,
I’m getting invalid results when testing a Regex in a format
validation on a Rails model.
Code is…
in Model
allow ‘- n/a -’ or alphanum with _ – no spaces
validates_format_of :test_name, :with => /\A[A-Za-z0-9_]+\z/, :unless
=> lambda{|x| x.test_name == ‘- n/a -’}
in spec
hardware_test = Factory.build(:hardware_test, :test_name => ‘- n/a -’)
hardware_test.should be_valid, “’#{hardware_test.test_name}’ - should
be valid”
spec result
‘HardwareTest should properly validate test_name format’ FAILED
‘- n/a -’ - should be valid
./spec/models/hardware_test_spec.rb:34:
finally, from console
andy@hst-26-147 (Rails234)->sc
Loading development environment (Rails 2.3.4)
a = HardwareTest.new(:test_name => ‘- n/a -’)
=> #<HardwareTest id: nil, test_name: “- n/a -”, code_module_id: nil,
test_description: nil, test_reviewed: false, interactive: false,
loopback: false, factory: false, media: false, test_category_id: nil,
created_at: nil, updated_at: nil, creator_id: nil, updater_id: nil>a.valid?
=> true
Granted the console is in dev, not test, but I still don’t get it.
Literally pulled on my hair on this one. I’ve tried altering the
Regex many times - adding the :unless => lambda was my last effort.
I can’t see how this isn’t passing.
Thanks for any help