aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorre4k <re4k@re4k.info>2013-04-05 03:02:43 +0900
committerre4k <re4k@re4k.info>2013-04-05 03:02:43 +0900
commit62cb571ea3773039c8a61859fe0bbc1e74c94575 (patch)
treebb9db3416fe5e0175c7238bcce168eb537a72969 /spec
parent84183b7bb1c42a80b323ea3caef30467dcde23a6 (diff)
downloadaclog-62cb571ea3773039c8a61859fe0bbc1e74c94575.tar.gz
Add tests of Tweet(partial)
Diffstat (limited to 'spec')
-rw-r--r--spec/factories/accounts.rb1
-rw-r--r--spec/factories/favorites.rb6
-rw-r--r--spec/factories/retweets.rb6
-rw-r--r--spec/factories/tweets.rb7
-rw-r--r--spec/factories/users.rb52
-rw-r--r--spec/models/account_spec.rb13
-rw-r--r--spec/models/tweet_spec.rb92
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