RSpec book help; why won't this stub method work?

18 views
Skip to first unread message

David Zhang

unread,
Jun 23, 2011, 9:54:54 AM6/23/11
to rubyonra...@googlegroups.com
Subscription model--------------------------------------------
class Subscription < ActiveRecord::Base
  has_one :user

  def can_send_message?
    if user.sent_messages.count < limit
      true
    else
      false
    end
  end

end

Subscription model spec--------------------------------------------
require 'spec_helper'

describe Subscription do

  describe "#can_send_message?" do

    before(:each) do
      @subscription = Subscription.new(:limit => 10)
      @zach = User.create! :subscription => @subscription
    end

    context "when a user has not reached the subscription limit for the month" do
      it "returns true" do
        @zach.sent_messages.stub(:count).and_return(9) # this isn't working
        @subscription.can_send_message?.should == true
      end
    end

    context "when a user has reached the subscription limit for the month" do
      it "returns false" do
        @zach.sent_messages.stub(:count).and_return(10) # this isn't working
        @subscription.can_send_message?.should == false
      end
    end

  end

end

=================

When I run rspec spec for these examples, the first example passes because user.sent_messages.count is ZERO.
The second example fails... Any ideas why?

Chirag Singhal

unread,
Jun 23, 2011, 10:50:30 AM6/23/11
to rubyonra...@googlegroups.com
count is a class method, so maybe you should try stubbing it on the Message class

David Zhang

unread,
Jun 23, 2011, 2:41:15 PM6/23/11
to rubyonra...@googlegroups.com
That did it! Thanks - I didn't know class methods required that.

Message.stub(:count).and_return(9)
Reply all
Reply to author
Forward
0 new messages