IZ MS more tests for status message scopes

This commit is contained in:
Maxwell Salzberg 2011-10-03 14:34:07 -07:00
parent dd1a1c15bb
commit 008116fa3f
2 changed files with 67 additions and 5 deletions

View file

@ -12,15 +12,42 @@ describe Post do
describe 'scopes' do describe 'scopes' do
describe '.for_a_stream' do describe '.for_a_stream' do
it 'returns the posts ordered and limited by unix time' before do
it 'includes everything in .includes_for_a_stream' time_interval = 1000
it 'is limited to 15 posts' time_past = 1000000
@posts = (1..3).map do |n|
aspect_to_post = alice.aspects.where(:name => "generic").first
post = alice.post :status_message, :text => "#{alice.username} - #{n}", :to => aspect_to_post.id
post.created_at = (post.created_at-time_past) - time_interval
post.updated_at = (post.updated_at-time_past) + time_interval
post.save
time_interval += 1000
post
end
end
it 'returns the posts ordered and limited by unix time' do
Post.for_a_stream(Time.now + 1, "created_at").should == @posts
Post.for_a_stream(Time.now + 1, "updated_at").should == @posts.reverse
end
it 'includes everything in .includes_for_a_stream' do
Post.should_receive(:includes_for_a_stream)
Post.for_a_stream(Time.now + 1, "created_at")
end
it 'is limited to 15 posts' do
Post.stub(:by_max_time).and_return(Post)
Post.stub(:includes_for_a_stream).and_return(Post)
Post.should_receive(:limit)
Post.for_a_stream(Time.now + 1, "created_at")
end
end end
describe 'includes for a stream' do describe 'includes for a stream' do
it 'inclues author profile and mentions' it 'inclues author profile and mentions'
it 'should include photos and root of reshares(but does not)' it 'should include photos and root of reshares(but does not)'
end end
end end

View file

@ -19,11 +19,46 @@ describe StatusMessage do
describe 'scopes' do describe 'scopes' do
describe '.where_person_is_mentioned' do describe '.where_person_is_mentioned' do
it 'returns status messages where the given person is mentioned' it 'returns status messages where the given person is mentioned' do
@bo = bob.person
@test_string = "@{Daniel; #{@bo.diaspora_handle}} can mention people like Raph"
Factory.create(:status_message, :text => @test_string )
Factory.create(:status_message, :text => @test_string )
Factory(:status_message)
StatusMessage.where_person_is_mentioned(@bo).count.should == 2
end
end end
describe '.owned_or_visible_by_user' do describe '.owned_or_visible_by_user' do
it 'scopes status_messages based on posts visisble via contacts or public' before do
@you = bob
@public_post = Factory(:status_message, :public => true)
@your_post = Factory(:status_message, :author => @you.person)
@post_from_contact = eve.post(:status_message, :text => 'wooo', :to => eve.aspects.where(:name => 'generic').first)
@post_from_stranger = Factory(:status_message, :public => false)
end
it 'returns post from your contacts' do
StatusMessage.owned_or_visible_by_user(@you).should include(@post_from_contact)
end
it 'returns your posts' do
StatusMessage.owned_or_visible_by_user(@you).should include(@your_post)
end
it 'returns public posts' do
StatusMessage.owned_or_visible_by_user(@you).should include(@public_post)
end
it 'does not return non contacts, non-public post' do
StatusMessage.owned_or_visible_by_user(@you).should_not include(@post_from_stranger)
end
it 'should return the three visible posts' do
StatusMessage.owned_or_visible_by_user(@you).count.should == 3
end
end end
end end