Skip to content

TheHiveProjects/no_peeping_toms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

no_peeping_toms
=============

This is a tailor-made version for THP that fixes the conflicts with state_machine gem.

Originally a plugin, now gemified.  'gem install no_peeping_toms'

This plugin disables observers in your specs, so that model specs can run in complete isolation.

To disable observers, place the following code in your test.rb, or spec_helper.rb, or wherever:

  ActiveRecord::Observer.disable_observers

You can easily reenable observers:

  ActiveRecord::Observer.enable_observers

You can choose to run some code with specific observers turned on.  This is useful when spec'ing an observer.  For example, if you write the following observer:

    class PersonObserver < ActiveRecord::Observer
      def before_update(person)
        old_person = Person.find person.id
        if old_person.name != person.name
          NameChange.create! :person => person, :old_name => old_person.name, :new_name => person.name
        end
      end
    end
    
You can spec the Person class in complete isolation.

    describe Person, " when changing a name" do
      before(:each) do
        @person = Person.create! :name => "Pat Maddox"
      end
  
      # By default, don't run any observers
      it "should not register a name change" do
        lambda { @person.update_attribute :name, "Don Juan Demarco" }.should_not change(NameChange, :count)
      end
  
      # Run only a portion of code with certain observers turned on
      it "should register a name change with the person observer turned on" do
        ActiveRecord::Observer.with_observers(:person_observer) do
          lambda { @person.update_attribute :name, "Don Juan Demarco" }.should change(NameChange, :count).by(1)
        end
    
        lambda { @person.update_attribute :name, "Man Without a Name" }.should_not change(NameChange, :count)
      end
    end

Cool people who have contributed to NoPeepingToms:
  * Brandon Keepers
  * Corey Haines
  * Jeff Siegel
  * Drew Olson
  * Zach Dennis

If you think your name should be here, shoot me an email and I'll add it ASAP.

Copyright (c) 2007-2010 Pat Maddox, released under the MIT license

About

State Machine observer bug fixed

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages