require "cases/helper" class Comment < ActiveRecord::Base attr_accessor :callers before_validation :record_callers def after_validation record_callers end def record_callers callers << self.class if callers end end class CommentObserver < ActiveRecord::Observer attr_accessor :callers def after_validation(model) callers << self.class if callers end end class CallbacksObserversTest < ActiveRecord::TestCase def test_model_callbacks_fire_before_observers_are_notified callers = [] comment = Comment.new comment.callers = callers CommentObserver.instance.callers = callers comment.valid? assert_equal [Comment, Comment, CommentObserver], callers, "model callbacks did not fire before observers were notified" end end