Sha256: bcb6d318d30c814c78f6d2e78a665bcac2b3ca92b8ed76ddbb76c0b3e413601b

Contents?: true

Size: 696 Bytes

Versions: 1

Compression:

Stored size: 696 Bytes

Contents

module RiotMongoid
  class HasAssociationAssertion < Riot::AssertionMacro
    register :has_association

    def evaluate(model, type, field, options = {})
      fail_msg = "expected #{model.class.to_s} to have assocation '#{type} :#{field}'"
      pass_msg = "#{model.class.to_s} has association '#{type} :#{field}'"
      opt_msg  = " with options #{options.inspect}"
      assoc    = model.relations[field.to_s]

      return fail(fail_msg) if assoc.nil? || assoc.macro != type.to_sym

      unless options.empty?
        return fail(fail_msg + opt_msg) unless options.all? { |k, v| assoc.send(k) == v }
        return pass(pass_msg + opt_msg)
      end

      pass pass_msg
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
riot-mongoid-2.1.0 lib/riot-mongoid/has_association.rb