aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorMislav Marohnić <mislav.marohnic@gmail.com>2010-04-16 19:30:40 +0200
committerJeremy Kemper <jeremy@bitsweat.net>2010-04-16 13:09:07 -0700
commitc2ca73c9ee5fc3dadf69cf565bd5e2bb30c82c50 (patch)
tree24295cda52cb05dc1c8914c677366fdb823df909 /activerecord/test
parentcf616e48765d1aa378d04618c044b493fd9583e1 (diff)
downloadrails-c2ca73c9ee5fc3dadf69cf565bd5e2bb30c82c50.tar.gz
rails-c2ca73c9ee5fc3dadf69cf565bd5e2bb30c82c50.tar.bz2
rails-c2ca73c9ee5fc3dadf69cf565bd5e2bb30c82c50.zip
ActiveModel::Observing: stop using Observable Ruby module, re-implement `notify_observers`
`Observable#notify_observers` from Ruby always returns false (which halts ActiveRecord callback chains) and has extra features (like `changed`) that were never used. Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/lifecycle_test.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/activerecord/test/cases/lifecycle_test.rb b/activerecord/test/cases/lifecycle_test.rb
index 5e71ed0221..233338498f 100644
--- a/activerecord/test/cases/lifecycle_test.rb
+++ b/activerecord/test/cases/lifecycle_test.rb
@@ -7,6 +7,14 @@ require 'models/comment'
class SpecialDeveloper < Developer; end
+class SalaryChecker < ActiveRecord::Observer
+ observe :special_developer
+
+ def before_save(developer)
+ return developer.salary > 80000
+ end
+end
+
class TopicaAuditor < ActiveRecord::Observer
observe :topic
@@ -159,4 +167,16 @@ class LifecycleTest < ActiveRecord::TestCase
assert_equal [ValidatedComment, ValidatedComment, ValidatedCommentObserver], callers,
"model callbacks did not fire before observers were notified"
end
+
+ test "able to save developer" do
+ SalaryChecker.instance # activate
+ developer = SpecialDeveloper.new :name => 'Roger', :salary => 100000
+ assert developer.save, "developer with normal salary failed to save"
+ end
+
+ test "unable to save developer with low salary" do
+ SalaryChecker.instance # activate
+ developer = SpecialDeveloper.new :name => 'Rookie', :salary => 50000
+ assert !developer.save, "allowed to save a developer with too low salary"
+ end
end