RSpec тестирование без проверки has_many через отношения - PullRequest
1 голос
/ 05 января 2012

У меня есть много-много отношений между документами.

Скажите, у меня есть document1 и document2.У меня есть много-много столов, где есть родители и дети.

document.rb

  has_many :child_relationships, :class_name => "DocumentRelationship", :foreign_key => "child_id", :dependent => :destroy
  has_many :parents, :through => :child_relationships, :source => :parent

  has_many :parent_relationships, :class_name => "DocumentRelationship", :foreign_key => "parent_id", :dependent => :destroy
  has_many :children, :through => :parent_relationships, :source => :child

document_relationship.rb

  belongs_to :parent, :class_name => "Document", :foreign_key => "parent_id"
  belongs_to :child, :class_name => "Document", :foreign_key => "child_id"

  validates_uniqueness_of :child_id, :scope => [:parent_id]

  validates_presence_of :parent_id
  validates_presence_of :child_id
  validate :obeys_chronology

  def obeys_chronology
    errors.add(:child_id, "must be created after its parent") if child_id.to_i < parent_id.to_i
    errors.add(:child_id, "cannot be its own parent") if child_id.to_i == parent_id.to_i
  end

Если я скажу document2.children << document1, это соответственноне проходит проверку, но я не знаю, как написать для этого тест.

Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 05 января 2012

Добавить в коллекцию

document2.children << document1
document2.children.contain?(document1).should == false

Тогда убедитесь, что его там нет.

...