aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/observing_test.rb
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-06-10 23:35:34 -0500
committerJoshua Peek <josh@joshpeek.com>2009-06-10 23:36:44 -0500
commit4d703592001eef1f7e670660cd701e32105bd521 (patch)
treedb36d270b23a4a6e3a01d59e25ad92257d16ef9a /activemodel/test/cases/observing_test.rb
parent59c83af18b1a9189f82b9c5408cd1bad35a11eb2 (diff)
downloadrails-4d703592001eef1f7e670660cd701e32105bd521.tar.gz
rails-4d703592001eef1f7e670660cd701e32105bd521.tar.bz2
rails-4d703592001eef1f7e670660cd701e32105bd521.zip
Integrate ActiveModel::Observing into ActiveRecord
Diffstat (limited to 'activemodel/test/cases/observing_test.rb')
-rw-r--r--activemodel/test/cases/observing_test.rb32
1 files changed, 20 insertions, 12 deletions
diff --git a/activemodel/test/cases/observing_test.rb b/activemodel/test/cases/observing_test.rb
index 421ac4b4f8..564451fa2f 100644
--- a/activemodel/test/cases/observing_test.rb
+++ b/activemodel/test/cases/observing_test.rb
@@ -9,7 +9,7 @@ class FooObserver < ActiveModel::Observer
class << self
public :new
end
-
+
attr_accessor :stub
def on_spec(record)
@@ -28,12 +28,12 @@ class ObservingTest < ActiveModel::TestCase
test "initializes model with no cached observers" do
assert ObservedModel.observers.empty?, "Not empty: #{ObservedModel.observers.inspect}"
end
-
+
test "stores cached observers in an array" do
ObservedModel.observers << :foo
assert ObservedModel.observers.include?(:foo), ":foo not in #{ObservedModel.observers.inspect}"
end
-
+
test "flattens array of assigned cached observers" do
ObservedModel.observers = [[:foo], :bar]
assert ObservedModel.observers.include?(:foo), ":foo not in #{ObservedModel.observers.inspect}"
@@ -57,22 +57,30 @@ class ObservingTest < ActiveModel::TestCase
ObservedModel::Observer.expects(:instance)
ObservedModel.instantiate_observers
end
-
+
test "passes observers to subclasses" do
FooObserver.instance
bar = Class.new(Foo)
assert_equal Foo.count_observers, bar.count_observers
end
end
-
+
class ObserverTest < ActiveModel::TestCase
def setup
ObservedModel.observers = :foo_observer
- FooObserver.models = nil
+ FooObserver.instance_eval do
+ alias_method :original_observed_classes, :observed_classes
+ end
+ end
+
+ def teardown
+ FooObserver.instance_eval do
+ alias_method :observed_classes, :original_observed_classes
+ end
end
test "guesses implicit observable model name" do
- assert_equal 'Foo', FooObserver.observed_class_name
+ assert_equal Foo, FooObserver.observed_class
end
test "tracks implicit observable models" do
@@ -80,7 +88,7 @@ class ObserverTest < ActiveModel::TestCase
assert instance.send(:observed_classes).include?(Foo), "Foo not in #{instance.send(:observed_classes).inspect}"
assert !instance.send(:observed_classes).include?(ObservedModel), "ObservedModel in #{instance.send(:observed_classes).inspect}"
end
-
+
test "tracks explicit observed model class" do
old_instance = FooObserver.new
assert !old_instance.send(:observed_classes).include?(ObservedModel), "ObservedModel in #{old_instance.send(:observed_classes).inspect}"
@@ -88,7 +96,7 @@ class ObserverTest < ActiveModel::TestCase
instance = FooObserver.new
assert instance.send(:observed_classes).include?(ObservedModel), "ObservedModel not in #{instance.send(:observed_classes).inspect}"
end
-
+
test "tracks explicit observed model as string" do
old_instance = FooObserver.new
assert !old_instance.send(:observed_classes).include?(ObservedModel), "ObservedModel in #{old_instance.send(:observed_classes).inspect}"
@@ -96,7 +104,7 @@ class ObserverTest < ActiveModel::TestCase
instance = FooObserver.new
assert instance.send(:observed_classes).include?(ObservedModel), "ObservedModel not in #{instance.send(:observed_classes).inspect}"
end
-
+
test "tracks explicit observed model as symbol" do
old_instance = FooObserver.new
assert !old_instance.send(:observed_classes).include?(ObservedModel), "ObservedModel in #{old_instance.send(:observed_classes).inspect}"
@@ -104,7 +112,7 @@ class ObserverTest < ActiveModel::TestCase
instance = FooObserver.new
assert instance.send(:observed_classes).include?(ObservedModel), "ObservedModel not in #{instance.send(:observed_classes).inspect}"
end
-
+
test "calls existing observer event" do
foo = Foo.new
FooObserver.instance.stub = stub
@@ -112,7 +120,7 @@ class ObserverTest < ActiveModel::TestCase
Foo.send(:changed)
Foo.send(:notify_observers, :on_spec, foo)
end
-
+
test "skips nonexistent observer event" do
foo = Foo.new
Foo.send(:changed)