diff options
Diffstat (limited to 'spec/models/tweet_spec.rb')
-rw-r--r-- | spec/models/tweet_spec.rb | 92 |
1 files changed, 91 insertions, 1 deletions
diff --git a/spec/models/tweet_spec.rb b/spec/models/tweet_spec.rb index a826279..26045aa 100644 --- a/spec/models/tweet_spec.rb +++ b/spec/models/tweet_spec.rb @@ -1,5 +1,95 @@ +# -*- coding: utf-8 -*- require 'spec_helper' describe Tweet do - pending "add some examples to (or delete) #{__FILE__}" + context "scopes" do + before :all do + @favoriters = [] + @retweeters = [] + @created_users = FactoryGirl.create_list(:user, 5) + @created_users.each do |u| + ts = FactoryGirl.create_list(:tweet, 3, user: u) + us = @created_users.reject{|m| m == u} # 4 + + # favs: 3, 1, 0 + us.shuffle.take(3).each do |m| + FactoryGirl.create(:favorite, tweet: ts[0], user: m) + @favoriters << m + end + _s = us.shuffle[1] + FactoryGirl.create(:favorite, tweet: ts[1], user: _s) + @favoriters << _s + + # rts: 2, 1, 0 + us.shuffle.take(2).each do |m| + FactoryGirl.create(:retweet, tweet: ts[0], user: m) + @retweeters << m + end + _m = us.shuffle[1] + FactoryGirl.create(:retweet, tweet: ts[1], user: _m) + @retweeters << _m + end + @favoriters.uniq! + @retweeters.uniq! + end + after :all do + @created_users.map(&:destroy) + end + + it "3日分" do + tweets = Tweet.recent + tweets.should_not include -> tweet {tweet.tweeted_at < Time.zone.now - 3.days} + end + + it "反応があった分" do + tweets = Tweet.reacted + tweets.should_not include -> tweet {tweet.favorites_count + tweet.retweets_count == 0} + end + + it "新しい順" do + tweets = Tweet.order_by_id.limit(2) + tweets.first.id.should be > tweets.last.id + end + + it "ふぁぼ数順" do + tweets = Tweet.order_by_favorites + tweets.first.favorites.count.should be >= tweets.last.favorites.count + end + + it "RT数順" do + tweets = Tweet.order_by_retweets + tweets.first.retweets.count.should be >= tweets.last.retweets.count + end + + it "反応数順" do + tweets = Tweet.order_by_reactions.limit(2) + tweets.first.retweets.count.should be >= tweets.last.retweets.count + end + + it "ユーザーにふぁぼられたツイート" do + tweets = Tweet.favorited_by(@favoriters.first) + tweets.should_not include -> tweet {tweet.user_id != @favoriters.first.id} + end + + it "ユーザーにRTされたツイート" do + tweets = Tweet.retweeted_by(@retweeters.first) + tweets.should_not include -> tweet {tweet.user_id != @retweeters.first.id} + end + + it "ユーザーが反応したツイート" do + user = (@favoriters + @retweeters).sample + tweets = Tweet.favorited_by(user) + tweets.should_not include -> tweet {tweet.user_id != user.id} + end + + it "オリジナルのツイート" do + # TODO + end + end + + context "class methods" do + it "Tweet.cached" do + # TODO + end + end end |