public
Description: A collection of RSpec matchers to be used with the Ruby on Rails project
Clone URL: git://github.com/joshknowles/rspec-on-rails-matchers.git
joshknowles (author)
Sun Mar 02 21:14:47 -0800 2008
commit  33f44e4d7242d05fa9f1a25556e0f4d11b713feb
tree    43bfa839f7b968a0a7235f11e1510dc7c6ee9314
parent  1b2d79a6d9b34c2815430a6d9193c88a1383fe02
rspec-on-rails-matchers / lib / spec / rails / matchers / observers.rb
100644 34 lines (28 sloc) 0.931 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
25
26
27
28
29
30
31
32
33
34
module Spec
  module Rails
    module Matchers
 
      class Observe
        def initialize(expected_model_class)
          @expected_model_class = expected_model_class
        end
    
        def matches?(observer)
          @observer = observer
          if @observer.is_a?(ActiveRecord::Observer)
            @observer = @observer.class
          end
          @observed_classes = observer.observed_classes.flatten
          @observed_classes.include?(@expected_model_class)
        end
    
        def failure_message
          return "expected #{@observer.name} to observe #{@expected_model_class.name}, but it was not included in [#{@observed_classes.map(&:name).join(', ')}]"
        end
    
        def description
          "observer to be observing #{@expected_model_class.name}"
        end
      end
 
      def observe(expected_model_class)
        Observe.new(expected_model_class)
      end
      
    end
  end
end