#spec/observers/person_observer_spec.rb
describe PersonObserver do
it “should call the observer”
person = Person.generate
Note.should_receive(:update_associated)
person.save
end
it “should not call the observer”
person = Person.generate
Note.should_receive(:update_associated)
person.save
end
end
This fails, and I can not figure out why.
If I fire up the console and modify a person and save it, the observer
fires
and the Note class updates what it needs to.
But the cracker is… I have other observers that work fine… I’m at
wits
end on this.
end #spec/observers/person_observer_spec.rb
end
end
This fails, and I can not figure out why.
I see two examples with identical code. Do they both fail, or just the
2nd one? If so, there was a bug in which mocked inherited class
methods were not properly restored after the example. This is fixed in
git, but not released.
Would you mind building the gem from the latest and see if it resolves
your issue?
Thanks,
David
If I fire up the console and modify a person and save it, the observer fires
and the Note class updates what it needs to.
But the cracker is… I have other observers that work fine… I’m at wits
end on this.
Any ideas why the observer might not be called?
I see two examples with identical code. Do they both fail, or just the
2nd one? If so, there was a bug in which mocked inherited class
methods were not properly restored after the example. This is fixed in
git, but not released.
Would you mind building the gem from the latest and see if it resolves
Sorry David, stupid typo. I am duplicating the text from another screen
that is not on the 'net directly. The second spec does not exist. #spec/observers/person_observer_spec.rb
describe PersonObserver do
it “should call the observer”
person = Person.generate
Note.should_receive(:update_associated)
person.save
end
end
that is not on the 'net directly. The second spec does not exist.
I’ll get the git version anyway and try it out.
Feel free, but now that I know there is only one example, I doubt that
it will solve your problem. But who knows? Couldn’t hurt to try
Sorry David, stupid typo. I am duplicating the text from another screen
that is not on the 'net directly. The second spec does not exist.
You are right… doesn’t make a lick of difference
Although, the new gem builds and installs nicely
Any other ideas? Or things you want me to try?
It feels like the observer is not getting instantiated within the Person
class with the spec. Calling the debugger and putting it inside the
Observer class and then running the spec from the command line with
ruby-debug enabled confirms this as the spec never drops into the
debugger
CLI.
Am I missing a load path somewhere?
Putting the debugger within the specification itself and then calling
ActiveRecord::Base.observers returns [:person_observer, … (other
observers)]
OK, in the app I have some name spaced classes under a ‘int’ directory.
Some of these classes have observers and they have the same name as the
top
level classes.
If I make a new observer in the top level that shares a name with an
observer inside the namespace, the specs work. If I create an observer
that
does not have a shared name, the specs don’t work.