Shoulda/RSpec matchers - conditional validation
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