web-dev-qa-db-fra.com

Correspondants Shoulda / RSpec - validation conditionnelle

Dans mon code, j'avais la validation suivante avec les matchers Shoulda, ce qui fonctionne bien:

it { should validate_presence_of(:name) }

Dans mon modèle, j'ai ajouté la condition à ma validation:

validates_presence_of :name, :if => eligible?

Est-il possible de le refléter dans les validations?

J'ai essayé de regarder documentation pour les matchers shoulda, mais je n'ai pas pu trouver la solution.

Merci beaucoup!

61
alexs333

Il ne semble pas que shoulda_matchers fasse cela, mais il est assez facile de l'écrire vous-même:

  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
126
zetetic