diff options
author | Mislav Marohnić <mislav.marohnic@gmail.com> | 2010-04-16 19:30:40 +0200 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2010-04-16 13:09:07 -0700 |
commit | c2ca73c9ee5fc3dadf69cf565bd5e2bb30c82c50 (patch) | |
tree | 24295cda52cb05dc1c8914c677366fdb823df909 /activerecord/test/cases | |
parent | cf616e48765d1aa378d04618c044b493fd9583e1 (diff) | |
download | rails-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/cases')
-rw-r--r-- | activerecord/test/cases/lifecycle_test.rb | 20 |
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 |