scouter 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +56 -0
  8. data/Rakefile +7 -0
  9. data/bin/scouter +26 -0
  10. data/lib/scouter/base/connection.rb +12 -0
  11. data/lib/scouter/base/object.rb +78 -0
  12. data/lib/scouter/base/version.rb +3 -0
  13. data/lib/scouter/buffer.rb +49 -0
  14. data/lib/scouter/facebook.rb +31 -0
  15. data/lib/scouter/feedly.rb +39 -0
  16. data/lib/scouter/google_plus.rb +83 -0
  17. data/lib/scouter/hatena_bookmark.rb +31 -0
  18. data/lib/scouter/linkedin.rb +38 -0
  19. data/lib/scouter/pinterest.rb +38 -0
  20. data/lib/scouter/pocket.rb +55 -0
  21. data/lib/scouter/twitter.rb +38 -0
  22. data/lib/scouter.rb +62 -0
  23. data/scouter.gemspec +29 -0
  24. data/spec/fixtures/scouter/buffer_google.json +2 -0
  25. data/spec/fixtures/scouter/buffer_yahoo.json +2 -0
  26. data/spec/fixtures/scouter/facebook_yahoo.json +15 -0
  27. data/spec/fixtures/scouter/facebook_yahoo_google.json +26 -0
  28. data/spec/fixtures/scouter/feedly_morizyun_feed.json +2 -0
  29. data/spec/fixtures/scouter/feedly_morizyun_hp.json +1 -0
  30. data/spec/fixtures/scouter/feedly_yahoo_news.json +2 -0
  31. data/spec/fixtures/scouter/hatenabookmark_yahoo.json +2 -0
  32. data/spec/fixtures/scouter/hatenabookmark_yahoo_google.json +2 -0
  33. data/spec/fixtures/scouter/linkedin_google.json +2 -0
  34. data/spec/fixtures/scouter/linkedin_yahoo.json +2 -0
  35. data/spec/fixtures/scouter/pinterest_google.json +2 -0
  36. data/spec/fixtures/scouter/pinterest_yahoo.json +2 -0
  37. data/spec/fixtures/scouter/pocket_google.html +30 -0
  38. data/spec/fixtures/scouter/pocket_morizyun_feed.html +30 -0
  39. data/spec/fixtures/scouter/pocket_morizyun_hp.html +30 -0
  40. data/spec/fixtures/scouter/pocket_yahoo.html +30 -0
  41. data/spec/fixtures/scouter/twitter_google.json +2 -0
  42. data/spec/fixtures/scouter/twitter_yahoo.json +2 -0
  43. data/spec/scouter/buffer_spec.rb +28 -0
  44. data/spec/scouter/facebook_spec.rb +36 -0
  45. data/spec/scouter/feedly_spec.rb +37 -0
  46. data/spec/scouter/google_plus_spec.rb +27 -0
  47. data/spec/scouter/hatena_bookmark_spec.rb +27 -0
  48. data/spec/scouter/linkedin_spec.rb +26 -0
  49. data/spec/scouter/pinterest_spec.rb +26 -0
  50. data/spec/scouter/pocket_spec.rb +26 -0
  51. data/spec/scouter/twitter_spec.rb +26 -0
  52. data/spec/scouter_spec.rb +82 -0
  53. data/spec/spec_helper.rb +72 -0
  54. metadata +225 -0
data/lib/scouter.rb ADDED
@@ -0,0 +1,62 @@
1
+ # coding:utf-8
2
+ # Standard Library
3
+ require 'cgi'
4
+ require 'open-uri'
5
+ require 'json'
6
+ require 'hashie/mash'
7
+
8
+ # Scouter Class/Module
9
+ require 'scouter/base/version'
10
+ require 'scouter/base/object'
11
+ require 'scouter/buffer'
12
+ require 'scouter/facebook'
13
+ require 'scouter/feedly'
14
+ require 'scouter/google_plus'
15
+ require 'scouter/hatena_bookmark'
16
+ require 'scouter/linkedin'
17
+ require 'scouter/pinterest'
18
+ require 'scouter/pocket'
19
+ require 'scouter/twitter'
20
+
21
+ module Scouter
22
+ WAIT_SEC = 1
23
+ ONE_TIME_URL_MAX = 20
24
+
25
+ SERVICES = [ Scouter::Buffer,
26
+ Scouter::Facebook,
27
+ Scouter::Feedly,
28
+ Scouter::GooglePlus,
29
+ Scouter::HatenaBookmark,
30
+ Scouter::Linkedin,
31
+ Scouter::Pinterest,
32
+ Scouter::Pocket,
33
+ Scouter::Twitter ]
34
+
35
+ # get Social Count By Buffer/Facebook/Feedly/GooglePlus/HatenaBookmark/Linkedin/Pinterest/Pocket/Twitter
36
+ # @param [String or Array] urls
37
+ def self.get_count(urls, services = SERVICES)
38
+ results, errors = [], {}
39
+
40
+ services.each do |service|
41
+ result, error = service.get_count(urls)
42
+ errors[service.service_name] = error && next unless error.empty?
43
+ results << result
44
+ end
45
+
46
+ results_hash = results_merged_hash(results)
47
+ return [results_hash, errors]
48
+ end
49
+
50
+ private
51
+
52
+ def self.results_merged_hash(results)
53
+ results_hash = {}
54
+ results.each do |item|
55
+ item.each do |url, hash|
56
+ results_hash[url] = (results_hash[url] || {}).merge(hash)
57
+ end
58
+ end
59
+ Hashie::Mash.new(results_hash)
60
+ end
61
+
62
+ end
data/scouter.gemspec ADDED
@@ -0,0 +1,29 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'scouter/base/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'scouter'
8
+ spec.version = Scouter::VERSION
9
+ spec.authors = ['morizyun']
10
+ spec.email = ['merii.ken@gmail.com']
11
+ spec.summary = %q{get share count in Buffer/Facebook/Feedly/GooglePlus/HatenaBookmark/Linkedin/Pinterest/Pocket/Twitter}
12
+ spec.description = %q{get share count in Buffer/Facebook/Feedly/GooglePlus/HatenaBookmark/Linkedin/Pinterest/Pocket/Twitter}
13
+ spec.homepage = 'https://github.com/morizyun/scouter'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.required_ruby_version = '>= 1.9.3'
22
+ spec.add_dependency 'hashie'
23
+ spec.add_dependency 'thor'
24
+ spec.add_development_dependency 'bundler', '~> 1.7'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'pry'
27
+ spec.add_development_dependency 'fakeweb'
28
+ spec.add_development_dependency 'rspec'
29
+ end
@@ -0,0 +1,2 @@
1
+
2
+ {"shares":4635}
@@ -0,0 +1,2 @@
1
+
2
+ {"shares":129}
@@ -0,0 +1,15 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "url": "http://www.yahoo.co.jp/",
5
+ "normalized_url": "http://www.yahoo.co.jp/",
6
+ "share_count": 58367,
7
+ "like_count": 88446,
8
+ "comment_count": 18845,
9
+ "total_count": 165658,
10
+ "commentsbox_count": 33,
11
+ "comments_fbid": 400186308976,
12
+ "click_count": 5
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "data": [
3
+ {
4
+ "url": "http://www.google.com/",
5
+ "normalized_url": "http://www.google.com/",
6
+ "share_count": 6599040,
7
+ "like_count": 1550962,
8
+ "comment_count": 1808001,
9
+ "total_count": 9958003,
10
+ "commentsbox_count": 929,
11
+ "comments_fbid": 396269740024,
12
+ "click_count": 265614
13
+ },
14
+ {
15
+ "url": "http://www.yahoo.co.jp/",
16
+ "normalized_url": "http://www.yahoo.co.jp/",
17
+ "share_count": 58367,
18
+ "like_count": 88446,
19
+ "comment_count": 18845,
20
+ "total_count": 165658,
21
+ "commentsbox_count": 33,
22
+ "comments_fbid": 400186308976,
23
+ "click_count": 5
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,2 @@
1
+
2
+ {"id":"feed/http://feeds.feedburner.com/rubyrails","feedId":"feed/http://feeds.feedburner.com/rubyrails","language":"ja","subscribers":699,"title":"酒と泪とRubyとRailsと","velocity":1.2,"topics":["ruby","it","tech","programming","プログラミング"],"website":"http://morizyun.github.io/","description":"Railsアプリで簡単に自分で作った404/500エラーページを表示させる手順です。404/500エラーページもユーザビリティの面やコンバージョンの面で非常に重要ですよね! あるRailsアプリでルーティング系のエラーはルートにリダイレクトするようにしていたのですが、SEO的にはNGだと知りました …","contentType":"article","partial":false,"iconUrl":"http://storage.googleapis.com/site-assets/nVYw0wl0ErFFolk8q67vNTT0CjjBX5ZzF6h7DiV487E_sicon-148390e20c6","visualUrl":"http://storage.googleapis.com/site-assets/nVYw0wl0ErFFolk8q67vNTT0CjjBX5ZzF6h7DiV487E_svisual"}
@@ -0,0 +1,2 @@
1
+
2
+ {"id":"feed/http://rss.dailynews.yahoo.co.jp/fc/rss.xml","feedId":"feed/http://rss.dailynews.yahoo.co.jp/fc/rss.xml","language":"ja","subscribers":4370,"title":"Yahoo!ニュース・トピックス - トップ","velocity":715.2,"topics":["news","ニュース","yahoo"],"website":"http://news.yahoo.co.jp/","description":"Yahoo! JAPANのニュース・トピックスで取り上げている最新の見出しを提供しています。","contentType":"article","partial":true,"iconUrl":"http://storage.googleapis.com/site-assets/77SstB99G_bAswvFv8rV1-60WkgCWiDra34ZDXCcdi0_sicon-14834fde21a","visualUrl":"http://storage.googleapis.com/site-assets/77SstB99G_bAswvFv8rV1-60WkgCWiDra34ZDXCcdi0_svisual"}
@@ -0,0 +1,2 @@
1
+
2
+ {"http://www.yahoo.co.jp/":13465}
@@ -0,0 +1,2 @@
1
+
2
+ {"http://www.yahoo.co.jp/":13465,"http://www.google.com/":470}
@@ -0,0 +1,2 @@
1
+
2
+ {"count":1003,"fCnt":"1,003","fCntPlusOne":"1,004","url":"http:\/\/www.google.com\/"}
@@ -0,0 +1,2 @@
1
+
2
+ {"count":216,"fCnt":"216","fCntPlusOne":"217","url":"http:\/\/www.yahoo.co.jp\/"}
@@ -0,0 +1,2 @@
1
+
2
+ receiveCount({"url":"http://www.google.com/","count":912822})
@@ -0,0 +1,2 @@
1
+
2
+ receiveCount({"url":"http://www.yahoo.co.jp/","count":141})
@@ -0,0 +1,30 @@
1
+
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="https://d7x5nblzs94me.cloudfront.net/v1/c/button.css?v=6" />
5
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/shared.js?v=2"></script>
6
+ </head>
7
+ <body>
8
+
9
+ <div class="widget vertical pocket left">
10
+ <a id="btn">
11
+ <!--
12
+ Please do not scrape this for the Pocket count.
13
+ It is not relible for you to use and will likely change.
14
+ Contact us at api@getpocket.com for an official API.
15
+ Thanks!
16
+ -->
17
+ <span><em id="cnt">164929</em><i></i><u></u></span>
18
+ <b></b>
19
+ </a>
20
+ </div>
21
+
22
+ <script type="text/javascript">
23
+ var POCKET_DOMAIN = 'getpocket.com';
24
+ var iLi = false;
25
+
26
+ var btnData = {"mode":"viapocketbutton","ct":"a17dc9c5ffb9fe2efdf153989436f31fd689ab85","ctn":"f3b1c476c30b70091c17e73e43a422d7d069de0d","label":"pocket","count":"vertical","src":"http:\/\/www.google.com\/","url":"http:\/\/www.google.com\/"};
27
+ </script>
28
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/button.js?v=5"></script>
29
+ </body>
30
+ </html>
@@ -0,0 +1,30 @@
1
+
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="https://d7x5nblzs94me.cloudfront.net/v1/c/button.css?v=6" />
5
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/shared.js?v=2"></script>
6
+ </head>
7
+ <body>
8
+
9
+ <div class="widget vertical pocket left">
10
+ <a id="btn">
11
+ <!--
12
+ Please do not scrape this for the Pocket count.
13
+ It is not relible for you to use and will likely change.
14
+ Contact us at api@getpocket.com for an official API.
15
+ Thanks!
16
+ -->
17
+ <span><em id="cnt">0</em><i></i><u></u></span>
18
+ <b></b>
19
+ </a>
20
+ </div>
21
+
22
+ <script type="text/javascript">
23
+ var POCKET_DOMAIN = 'getpocket.com';
24
+ var iLi = false;
25
+
26
+ var btnData = {"mode":"viapocketbutton","ct":"df051b121571d045824d92441eeeb01d0152a945","ctn":"d01a3b7fdbc701780354f58192f22f58bbda7df1","label":"pocket","count":"vertical","src":"http:\/\/feeds.feedburner.com\/rubyrails","url":"http:\/\/feeds.feedburner.com\/rubyrails"};
27
+ </script>
28
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/button.js?v=5"></script>
29
+ </body>
30
+ </html>
@@ -0,0 +1,30 @@
1
+
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="https://d7x5nblzs94me.cloudfront.net/v1/c/button.css?v=6" />
5
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/shared.js?v=2"></script>
6
+ </head>
7
+ <body>
8
+
9
+ <div class="widget vertical pocket left">
10
+ <a id="btn">
11
+ <!--
12
+ Please do not scrape this for the Pocket count.
13
+ It is not relible for you to use and will likely change.
14
+ Contact us at api@getpocket.com for an official API.
15
+ Thanks!
16
+ -->
17
+ <span><em id="cnt">39</em><i></i><u></u></span>
18
+ <b></b>
19
+ </a>
20
+ </div>
21
+
22
+ <script type="text/javascript">
23
+ var POCKET_DOMAIN = 'getpocket.com';
24
+ var iLi = false;
25
+
26
+ var btnData = {"mode":"viapocketbutton","ct":"636227860fa96aa911d5220cef281b48598eb59a","ctn":"957829ff5d92cee21e99de7e0372257539c41699","label":"pocket","count":"vertical","src":"http:\/\/morizyun.github.io","url":"http:\/\/morizyun.github.io"};
27
+ </script>
28
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/button.js?v=5"></script>
29
+ </body>
30
+ </html>
@@ -0,0 +1,30 @@
1
+
2
+ <html>
3
+ <head>
4
+ <link rel="stylesheet" type="text/css" href="https://d7x5nblzs94me.cloudfront.net/v1/c/button.css?v=6" />
5
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/shared.js?v=2"></script>
6
+ </head>
7
+ <body>
8
+
9
+ <div class="widget vertical pocket left">
10
+ <a id="btn">
11
+ <!--
12
+ Please do not scrape this for the Pocket count.
13
+ It is not relible for you to use and will likely change.
14
+ Contact us at api@getpocket.com for an official API.
15
+ Thanks!
16
+ -->
17
+ <span><em id="cnt">22840</em><i></i><u></u></span>
18
+ <b></b>
19
+ </a>
20
+ </div>
21
+
22
+ <script type="text/javascript">
23
+ var POCKET_DOMAIN = 'getpocket.com';
24
+ var iLi = false;
25
+
26
+ var btnData = {"mode":"viapocketbutton","ct":"59c2bdfd4801de0f06875e7cebd2a7957067ad64","ctn":"2264ccd664d5d10fdd016490530fbf79752c73e4","label":"pocket","count":"vertical","src":"http:\/\/www.yahoo.co.jp\/","url":"http:\/\/www.yahoo.co.jp\/"};
27
+ </script>
28
+ <script type="text/javascript" src="https://d7x5nblzs94me.cloudfront.net/v1/j/button.js?v=5"></script>
29
+ </body>
30
+ </html>
@@ -0,0 +1,2 @@
1
+
2
+ {"count":21930338,"url":"http:\/\/www.google.com\/"}
@@ -0,0 +1,2 @@
1
+
2
+ {"count":1352651,"url":"http:\/\/www.yahoo.co.jp\/"}
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Buffer do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ context 'when url is feed url' do
10
+ it 'return 129 shares' do
11
+ results, errors = Scouter::Buffer.get_count(yahoo)
12
+ expect(errors).to be_empty
13
+ expect(results[yahoo].buffer).to be == 129
14
+ end
15
+ end
16
+ end
17
+
18
+ context 'when url parameter is Array' do
19
+ it 'yahoo has over 129 shares and google 4635 shares' do
20
+ results, errors = Scouter::Buffer.get_count([yahoo, google])
21
+ expect(errors).to be_empty
22
+ expect(results[yahoo].buffer).to be == 129
23
+ expect(results[google].buffer).to be == 4635
24
+ end
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Facebook do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ context 'when exist url' do
10
+ it 'yahoo has over 160000 like' do
11
+ results, errors = Scouter::Facebook.get_count(yahoo)
12
+ expect(errors).to be_empty
13
+ expect(results[yahoo].facebook).to be >= 160000
14
+ end
15
+ end
16
+
17
+ context 'when raise parse errors' do
18
+ it 'returns error' do
19
+ allow(Scouter::Facebook).to receive(:parse_response).and_raise(StandardError)
20
+ _, errors = Scouter::Facebook.get_count(yahoo)
21
+ expect(errors).not_to be_empty
22
+ end
23
+ end
24
+ end
25
+
26
+ context 'when url parameter is Array' do
27
+ it 'yahoo has over 160000 like and google has over 9900000 like' do
28
+ results, errors = Scouter::Facebook.get_count([yahoo, google])
29
+ expect(errors).to be_empty
30
+ expect(results[yahoo].facebook).to be >= 160000
31
+ expect(results[google].facebook).to be >= 9900000
32
+ end
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Feedly do
4
+ describe '#get_count' do
5
+ let!(:morizyun_hp) { 'http://morizyun.github.io' }
6
+ let!(:morizyun_feed){ 'http://feeds.feedburner.com/rubyrails' }
7
+ let!(:yahoo_news) { 'http://rss.dailynews.yahoo.co.jp/fc/rss.xml' }
8
+
9
+ context 'when url parameter is String' do
10
+ context 'when url is feed url' do
11
+ it 'return 699 subscriber' do
12
+ results, errors = Scouter::Feedly.get_count(morizyun_feed)
13
+ expect(errors).to be_empty
14
+ expect(results[morizyun_feed].feedly).to be >= 699
15
+ end
16
+ end
17
+
18
+ context 'when url is website url' do
19
+ it 'return nil' do
20
+ results, errors = Scouter::Feedly.get_count(morizyun_hp)
21
+ expect(errors).to be_empty
22
+ expect(results[morizyun_hp]).to be_nil
23
+ end
24
+ end
25
+ end
26
+
27
+ context 'when url parameter is Array' do
28
+ it 'morizyun.github.io has over 699 subscriber and google has over 4369 subscriber' do
29
+ results, errors = Scouter::Feedly.get_count([morizyun_feed, yahoo_news])
30
+ expect(errors).to be_empty
31
+ expect(results[morizyun_feed].feedly).to be >= 699
32
+ expect(results[yahoo_news].feedly).to be >= 4369
33
+ end
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::GooglePlus do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 130000 count' do
10
+ results, errors = Scouter::GooglePlus.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].googleplus).to be >= 130000
13
+
14
+ end
15
+ end
16
+
17
+ context 'when url parameter is Array' do
18
+ it 'yahoo has over 130000 count and google has over 9100000 count' do
19
+ results, errors = Scouter::GooglePlus.get_count([google, yahoo])
20
+ expect(errors).to be_empty
21
+ expect(results[yahoo].googleplus).to be >= 130000
22
+ expect(results[google].googleplus).to be >= 9100000
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::HatenaBookmark do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 13000 bookmarks' do
10
+ results, errors = Scouter::HatenaBookmark.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].hatenabookmark).to be >= 13000
13
+
14
+ end
15
+ end
16
+
17
+ context 'when url parameter is Array' do
18
+ it 'yahoo has over 13000 bookmarks and google has over 450 bookmarks' do
19
+ results, errors = Scouter::HatenaBookmark.get_count([google, yahoo])
20
+ expect(errors).to be_empty
21
+ expect(results[yahoo].hatenabookmark).to be >= 13000
22
+ expect(results[google].hatenabookmark).to be >= 450
23
+ end
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Linkedin do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 216 count' do
10
+ results, errors = Scouter::Linkedin.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].linkedin).to be >= 216
13
+ end
14
+ end
15
+
16
+ context 'when url parameter is Array' do
17
+ it 'yahoo has over 216 count and google has over 1003 count' do
18
+ results, errors = Scouter::Linkedin.get_count([google, yahoo])
19
+ expect(errors).to be_empty
20
+ expect(results[yahoo].linkedin).to be >= 216
21
+ expect(results[google].linkedin).to be >= 1003
22
+ end
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Pinterest do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 141 pins' do
10
+ results, errors = Scouter::Pinterest.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].pinterest).to be >= 141
13
+ end
14
+ end
15
+
16
+ context 'when url parameter is Array' do
17
+ it 'yahoo has over 141 pins and google has over 912822 pins' do
18
+ results, errors = Scouter::Pinterest.get_count([google, yahoo])
19
+ expect(errors).to be_empty
20
+ expect(results[yahoo].pinterest).to be >= 141
21
+ expect(results[google].pinterest).to be >= 912822
22
+ end
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Pocket do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 22000 like' do
10
+ results, errors = Scouter::Pocket.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].pocket).to be >= 22000
13
+ end
14
+ end
15
+
16
+ context 'when url parameter is Array' do
17
+ it 'yahoo has over 22000 count and google has over 160000 count' do
18
+ results, errors = Scouter::Pocket.get_count([google, yahoo])
19
+ expect(errors).to be_empty
20
+ expect(results[yahoo].pocket).to be >= 22000
21
+ expect(results[google].pocket).to be >= 160000
22
+ end
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe Scouter::Twitter do
4
+ describe '#get_count' do
5
+ let!(:yahoo) { 'http://www.yahoo.co.jp/' }
6
+ let!(:google) { 'http://www.google.com/' }
7
+
8
+ context 'when url parameter is String' do
9
+ it 'yahoo has over 135000 tweet' do
10
+ results, errors = Scouter::Twitter.get_count(yahoo)
11
+ expect(errors).to be_empty
12
+ expect(results[yahoo].twitter).to be >= 135000
13
+ end
14
+ end
15
+
16
+ context 'when url parameter is Array' do
17
+ it 'yahoo has over 135000 tweet and google has over 21920000 tweet' do
18
+ results, errors = Scouter::Twitter.get_count([google, yahoo])
19
+ expect(errors).to be_empty
20
+ expect(results[yahoo].twitter).to be >= 135000
21
+ expect(results[google].twitter).to be >= 21920000
22
+ end
23
+ end
24
+ end
25
+
26
+ end