3

I have a custom validator (located in app/validators/uri_validator.rb) which is used in:

validates :link, uri: true

How do I specify this in my specs?

Ideally I would like to have a one-line call, such as:

it { should validate_uri_of(:link) }

How do I do this?

krn
  • 6,715
  • 14
  • 59
  • 82

2 Answers2

3

Use factory girl to build a model object with invalid data and one with valid data and call the be_valid matcher.

#factory girl
build(:model, link: valid_uri).should be_valid
build(:model, link: invalid_uri).should_not be_valid
DVG
  • 17,392
  • 7
  • 61
  • 88
3

Another option is to use the allow_value matcher, although not ideal it can work in some circumstances.

it { should allow_value(value_which_is_valid).for(:link) }
it { should_not allow_value(value_which_is_invalid).for(:link) }
nmott
  • 9,454
  • 3
  • 45
  • 34