Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Shoulda/RSpec matchers - conditional validation

In my code I had the following validation with Shoulda matchers, which works fine:

it { should validate_presence_of(:name) }

In my model, I've added the condition to my validation:

validates_presence_of :name, :if => eligible?

Is it possible to reflect it in the validations?

I've tried looking at documentation for shoulda matchers, but haven't been able to locate the solution.

Many thanks!

like image 936
alexs333 Avatar asked Dec 11 '12 02:12

alexs333


1 Answers

It doesn't appear that shoulda_matchers does this, but it's easy enough to write it yourself::

  context "if eligible" do
    before { allow(subject).to receive(:eligible?).and_return(true) }
    it { should validate_presence_of(:name) }
  end

  context "if ineligible" do
    before { allow(subject).to receive(:eligible?).and_return(false) }
    it { should_not validate_presence_of(:name) }
  end
like image 165
zetetic Avatar answered Nov 20 '22 09:11

zetetic