class Test::Unit::TestCase # call-seq: # should_delegate(method, :to => member) # # Generates a test asserting that +method+ returns the value of that method # on +member+. # # Example: # should_deleate :full_name, :to => :user def self.should_delegate(method, opts) member = opts.delete(:to) or raise "Need a :to" klass = model_class should "delegate #{method} to #{member}" do assert_delegates klass.new, method, :to => member end end # call-seq: # assert_delgates(delegator, method, :to => member) # # Asserts that invoking +method+ on +delegator+ returns the value of that # method on +member+. # # Example: # assert_delegates post, :full_name, :to => :user def assert_delegates(delegator, method, opts) member = opts.delete(:to) or raise "Need a :to" expected = 'a value' delegatee = stub(member.to_s, method => expected) delegator.stubs(member => delegatee) actual = delegator.send(method) assert_received(delegatee, method) {|expect| expect.with.once } assert_equal expected, actual end end