Как протестировать Mongoid :: Observer с помощью rspec

В простой модели данных mongoid с пользователем, у которого много комментариев, я хочу наградить пользователя специальным значком, когда он напишет хотя бы 1 комментарий. Итак, я настроил наблюдателя следующим образом:

class CommentBadgeObserver < Mongoid::Observer
  observe :comment

  def after_create(comment)
    CommentBadge.check_conditions_for(comment.user)
  end
end

class CommentBadge < Badge
  def self.check_conditions_for(user)
    if user.comments.size > 1
      badge = CommentBadge.create(:title => "Comment badge")
      user.award(badge)
    end
  end
end

Метод user.award:

def award(badge)
  self.badges << badge
  self.save
end

Следующий тест не прошел (но я думаю, что это нормально, потому что наблюдатели выполняются в фоновом режиме?)

it 'should award the user with comment badge' do
    @comment = Factory(:comment, :user => @user)
    @user.badges.count.should == 1
    @user.badges[0].title.should == "Comment badge"
end

Каким может быть лучший способ проверить это поведение?

8
задан obo 22 November 2011 в 22:53
поделиться