diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/accounts.rb | 1 | ||||
-rw-r--r-- | spec/factories/favorites.rb | 6 | ||||
-rw-r--r-- | spec/factories/retweets.rb | 6 | ||||
-rw-r--r-- | spec/factories/tweets.rb | 7 | ||||
-rw-r--r-- | spec/factories/users.rb | 52 | ||||
-rw-r--r-- | spec/models/account_spec.rb | 13 | ||||
-rw-r--r-- | spec/models/tweet_spec.rb | 92 |
7 files changed, 155 insertions, 22 deletions
diff --git a/spec/factories/accounts.rb b/spec/factories/accounts.rb index de97702..689efa0 100644 --- a/spec/factories/accounts.rb +++ b/spec/factories/accounts.rb @@ -14,4 +14,3 @@ FactoryGirl.define do end end - diff --git a/spec/factories/favorites.rb b/spec/factories/favorites.rb new file mode 100644 index 0000000..4b9551d --- /dev/null +++ b/spec/factories/favorites.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :favorite do + user + tweet + end +end diff --git a/spec/factories/retweets.rb b/spec/factories/retweets.rb new file mode 100644 index 0000000..9f9dba6 --- /dev/null +++ b/spec/factories/retweets.rb @@ -0,0 +1,6 @@ +FactoryGirl.define do + factory :retweet do + user + tweet + end +end diff --git a/spec/factories/tweets.rb b/spec/factories/tweets.rb new file mode 100644 index 0000000..01f7919 --- /dev/null +++ b/spec/factories/tweets.rb @@ -0,0 +1,7 @@ +FactoryGirl.define do + factory :tweet do |t| + sequence(:text){|n| "text_" + (n ** 2).to_s} + sequence(:source){|n| "source_" + (n % 10).to_s} + sequence(:tweeted_at){|n| Time.at((1199113200..1388502000).to_a.sample)} + end +end diff --git a/spec/factories/users.rb b/spec/factories/users.rb index 3ee0055..35270ad 100644 --- a/spec/factories/users.rb +++ b/spec/factories/users.rb @@ -1,29 +1,41 @@ +# -*- coding: utf-8 -*- FactoryGirl.define do - factory :user_1, class: User do |f| - f.id 1326331596 - f.screen_name "aclog_test" - f.profile_image_url "https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png" - f.protected false + factory :user_1, class: User do + id 1326331596 + screen_name "aclog_test" + name "aclog test" + profile_image_url "https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png" + protected false end - factory :user_exists, class: User do |f| - f.id 15926668 - f.screen_name "toshi_a" - f.profile_image_url "https://si0.twimg.com/profile_images/3252770797/b462225c334fd35c22581684e98cb10d_normal.png" - f.protected false + factory :user_exists, class: User do + id 15926668 + screen_name "toshi_a" + name "name" + profile_image_url "https://si0.twimg.com/profile_images/3252770797/b462225c334fd35c22581684e98cb10d_normal.png" + protected false end - factory :user_not_exists, class: User do |f| - f.id 0 - f.screen_name "" - f.profile_image_url "" - f.protected false + factory :user_not_exists, class: User do + id 0 + screen_name "" + name "" + profile_image_url "" + protected false end - factory :user_suspended, class: User do |f| - f.id 230367516 - f.screen_name "re4k" - f.profile_image_url "https://si0.twimg.com/profile_images/3211524383/0b9d7fdd3fdf0c122af079fda4a7727a_normal.png" - f.protected false + factory :user_suspended, class: User do + id 230367516 + screen_name "re4k" + name "ちくわ" + profile_image_url "https://si0.twimg.com/profile_images/3211524383/0b9d7fdd3fdf0c122af079fda4a7727a_normal.png" + protected false + end + + factory :user do |u| + sequence(:screen_name){|n| "screen_name_#{n}"} + sequence(:name){|n| "name_#{n}"} + sequence(:profile_image_url){|n| "https://si0.twimg.com/sticky/default_profile_images/default_profile_#{n % 7}_normal.png"} + protected false end end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index 6b48169..712cc89 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -41,6 +41,14 @@ describe Account do end end + describe "Account.client" do + before(:each){@account_1 = FactoryGirl.create(:account_1)} + + it "Twitter::Client を返す。" do + @account_1.client.should be_a Twitter::Client + end + end + describe "Account#twitter_user" do before(:each){@account_1 = FactoryGirl.create(:account_1)} @@ -74,5 +82,10 @@ describe Account do end describe "Account.import_favorites" do + # TODO + end + + describe "Account.stats_api" do + # TODO end end 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 |