public
Description: Gitorious aims to provide a great way of doing distributed opensource code collaboration.
Homepage: http://gitorious.org/projects/gitorious
Clone URL: git://github.com/dysinger/gitorious.git
gitorious / spec / spec_dsl.rb
100644 24 lines (21 sloc) 0.607 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module KeyserSource
  module SpecDSL
    # original code by caboose court3nay (?)
    class HaveValidAssociations
      def matches?(model)
        @failed_association = nil
        @model_class = model.class
 
        model.class.reflect_on_all_associations.each do |assoc|
          model.send(assoc.name, true) rescue @failed_association = assoc.name
        end
        !@failed_association
      end
 
      def failure_message
        "invalid association \"#{@failed_association}\" on #{@model_class}"
      end
    end
 
    def have_valid_associations
      HaveValidAssociations.new
    end
  end
end