Skip to content

Instantly share code, notes, and snippets.

@aviflombaum
Created February 20, 2012 01:23
Show Gist options
  • Save aviflombaum/1867008 to your computer and use it in GitHub Desktop.
Save aviflombaum/1867008 to your computer and use it in GitHub Desktop.
Observers and RSpec
require 'spec_helper'
describe AnswerObserver do
# let(:user) {stub_model(User)}
# let(:answer) {Factory(:answer, :user => user)}
describe '#after_create' do
it "calls update_answer_summary on the answer's user" do
# This tests the implied implentation that the observer's
# after_create will fire on a real answer
user = stub_model(User)
user.should_receive(:update_answer_summary).with(Factory(:answer, :user => user))
# Whereas this strictly tests that update_answer_summary is called when the trigger
# is fired manually. Which is better?
# @answer = mock_model(Answer, :user => @user)
# @observer = AnswerObserver.instance
#
# user.should_receive(:update_answer_summary).with(@answer)
# @observer.after_create(@answer)
end
# These tests feel reduntant, like I'm testing rails functionality
# it 'is triggered after an answer is created' do
# AnswerObserver.instance.should_receive(:after_create).with(answer)
# end
#
# it 'is not triggered after an answer is updated' do
# answer # Loads the answer so that an update can be triggered
# AnswerObserver.instance.should_not_receive(:after_create)
# answer.choice_scale = 5
# answer.save
# end
end
end
@aviflombaum
Copy link
Author

I like it like this best.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment