Shoulda/RSpec matchers - conditional validation
rspec, ruby, ruby-on-rails, shoulda
Solution
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
Problem
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!