Refactor implementation of #reshare_count.

The old implementation which uses Post.where causes

  undefined method `abstract_class?' for Object:Class

in spec/controllers/posts_controller_spec.rb.  Not sure whether that's a problem
with Rails, or rspec, or what.
This commit is contained in:
Pistos 2011-10-04 12:42:28 -04:00
parent 51566ebe0b
commit a604dd2aa6
2 changed files with 43 additions and 2 deletions

View file

@ -54,7 +54,7 @@ class Post < ActiveRecord::Base
end
def reshare_count
@reshare_count ||= Post.where(:root_guid => self.guid).count
@reshare_count ||= Post.find_all_by_root_guid(self.guid).count
end
# @return Returns true if this Post will accept updates (i.e. updates to the caption of a photo).

View file

@ -378,4 +378,45 @@ describe Post do
end
end
end
describe '#reshare_count' do
before :each do
@post = @user.post :status_message, :text => "hello", :to => @aspect.id, :public => true
@post.reshares.size.should == 0
end
describe 'when post has not been reshared' do
it 'returns zero' do
@post.reshare_count.should == 0
end
end
describe 'when post has been reshared exactly 1 time' do
before :each do
@post.reshares.size.should == 0
@reshare = Factory.create(:reshare, :root => @post)
@post.reload
@post.reshares.size.should == 1
end
it 'returns 1' do
@post.reshare_count.should == 1
end
end
describe 'when post has been reshared more than once' do
before :each do
@post.reshares.size.should == 0
Factory.create(:reshare, :root => @post)
Factory.create(:reshare, :root => @post)
Factory.create(:reshare, :root => @post)
@post.reload
@post.reshares.size.should == 3
end
it 'returns the number of reshares' do
@post.reshare_count.should == 3
end
end
end
end