Sha256: 9f4b77d24bd1ef66d24f9f4f2fbaff20f61e5521a06d0c5e8ce731b3d0172bfc
Contents?: true
Size: 1.44 KB
Versions: 3
Compression:
Stored size: 1.44 KB
Contents
require 'spec_helper' class PersonObserver < MassiveRecord::ORM::Observer [:after_create].each do |observer| define_method observer do |person| send("calls_to_#{observer}") << person end define_method "calls_to_#{observer}" do instance_variable_get("@calls_to_#{observer}") or instance_variable_set("@calls_to_#{observer}", []) end end end class AuditObserver < MassiveRecord::ORM::Observer observe :test_class def changes_log @changes_log ||= [] end def after_save(record) changes_log << record.changes end end describe "Observers" do include SetUpHbaseConnectionBeforeAll include SetTableNamesToTestTable context "when having an implicit target" do subject { PersonObserver.instance } before { subject } # Tap to initialize observer it "calls after_save on observer" do person_1 = Person.create! name: "Thorbjorn Hermansen", age: 30 person_2 = Person.create! name: "Thorbjorn Hermansen", age: 30 subject.calls_to_after_create.should eq [person_1, person_2] end end context "having an explicit target" do subject { AuditObserver.instance } before { subject } # Tap to initialize observer it "logs changes to the test class" do test = TestClass.create! :foo => 'bar' subject.changes_log.clear test.foo = 'barbar' changes = test.changes test.save! subject.changes_log.should eq [changes] end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
massive_record-0.2.2 | spec/orm/cases/observing_spec.rb |
massive_record-0.2.2.rc2 | spec/orm/cases/observing_spec.rb |
massive_record-0.2.2.rc1 | spec/orm/cases/observing_spec.rb |