fetcher-microdata-twitter 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/features/stepdefs/translate_tweet_to_schema.rb +2 -2
- data/features/support/env.rb +1 -1
- data/fetcher-microdata-twitter.gemspec +1 -0
- data/lib/fetcher-microdata-twitter.rb +8 -0
- data/lib/fetcher/microdata/article_small/twitter/coercer.rb +20 -0
- data/lib/fetcher/microdata/person_user/twitter/coercer.rb +18 -0
- data/lib/fetcher/microdata/twitter/service.rb +1 -1
- data/lib/fetcher/microdata/twitter/version.rb +2 -2
- data/spec/fetcher/microdata/article_small/twitter/coercer_spec.rb +43 -0
- data/spec/fetcher/microdata/person_user/twitter/coercer_spec.rb +34 -0
- data/spec/spec_helper.rb +3 -1
- metadata +27 -17
- data/lib/fetcher/microdata/twitter.rb +0 -12
- data/lib/fetcher/microdata/twitter/article_small.rb +0 -38
- data/lib/fetcher/microdata/twitter/person_user.rb +0 -34
- data/lib/writer/fetcher/microdata/twitter/article_small.rb +0 -46
- data/lib/writer/fetcher/microdata/twitter/person_user.rb +0 -44
- data/spec/fetcher/microdata/twitter/article_small_spec.rb +0 -129
- data/spec/fetcher/microdata/twitter/person_user_spec.rb +0 -97
- data/spec/writer/fetcher/microdata/twitter/article_small_spec.rb +0 -133
- data/spec/writer/fetcher/microdata/twitter/person_user_spec.rb +0 -93
@@ -7,7 +7,7 @@ And /^the viewer:$/ do |json_viewer|
|
|
7
7
|
end
|
8
8
|
|
9
9
|
When /^I convert it into schema.org\/Article\/Small$/ do
|
10
|
-
@translated = Fetcher::Microdata::
|
10
|
+
@translated = Fetcher::Microdata::ArticleSmall.new :twitter, @tweet, @viewer
|
11
11
|
end
|
12
12
|
|
13
13
|
Then /^I should have:$/ do |json_schema|
|
@@ -21,5 +21,5 @@ Given /^the user:$/ do |json_user|
|
|
21
21
|
end
|
22
22
|
|
23
23
|
When /^I convert it into schema.org\/Person\/User$/ do
|
24
|
-
@translated = Fetcher::Microdata::
|
24
|
+
@translated = Fetcher::Microdata::PersonUser.new :twitter, @user
|
25
25
|
end
|
data/features/support/env.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
class ArticleSmall
|
4
|
+
module Twitter
|
5
|
+
Coercer = proc { |original_tweet, viewer|
|
6
|
+
{
|
7
|
+
:id => original_tweet["id"],
|
8
|
+
:additionalType => "http://getfetcher.net/Item",
|
9
|
+
:articleBody => original_tweet["text"],
|
10
|
+
:author => PersonUser.new(:twitter, original_tweet["user"]),
|
11
|
+
:viewer => PersonUser.new(:twitter, viewer),
|
12
|
+
:dateCreated => Fetcher::Microdata::Twitter::Service.instance.created_at_to_timestamp(original_tweet["created_at"]),
|
13
|
+
:provider => ["twitter", original_tweet["source"]],
|
14
|
+
:url => "https://twitter.com/#{original_tweet["user"]["screen_name"]}/status/#{original_tweet["id"]}"
|
15
|
+
}
|
16
|
+
}
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Fetcher
|
2
|
+
class Microdata
|
3
|
+
class PersonUser
|
4
|
+
module Twitter
|
5
|
+
Coercer = proc { |original_tweet|
|
6
|
+
{
|
7
|
+
:additionalType => "http://getfetcher.net/Item",
|
8
|
+
:id => original_tweet["id"],
|
9
|
+
:name => original_tweet["name"],
|
10
|
+
:dateRegistered => Fetcher::Microdata::Twitter::Service.instance.created_at_to_timestamp(original_tweet["created_at"]),
|
11
|
+
:description => original_tweet["description"],
|
12
|
+
:url => "https://twitter.com/#{original_tweet["screen_name"]}"
|
13
|
+
}
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::ArticleSmall::Twitter::Coercer' do
|
4
|
+
context 'the adapter receives a valid tweet and a valid viewer' do
|
5
|
+
before do
|
6
|
+
@tweet = JSON.parse File.read 'spec/tweet.json'
|
7
|
+
@viewer = JSON.parse File.read 'spec/viewer.json'
|
8
|
+
@adapter = Fetcher::Microdata::ArticleSmall::Twitter::Coercer.call @tweet, @viewer
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'should set #id with the value of "id"' do
|
12
|
+
@adapter[:id].should == @tweet["id"]
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'should set #additionalType as the getfetcher/Item type' do
|
16
|
+
@adapter[:additionalType].should == "http://getfetcher.net/Item"
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'should set #articleBody with the value of "text"' do
|
20
|
+
@adapter[:articleBody].should == @tweet["text"]
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should set #author with the Person from the value of "user" > "name"' do
|
24
|
+
@adapter[:author].attributes.should == Fetcher::Microdata::PersonUser.new(:twitter, @tweet["user"]).attributes
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should set #viewer with the Person from the value of "user" > "name"' do
|
28
|
+
@adapter[:viewer].attributes.should == Fetcher::Microdata::PersonUser.new(:twitter, @viewer).attributes
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should set #dateCreated with the timestamp obtained from "created_at"' do
|
32
|
+
@adapter[:dateCreated].should == 1329859747
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should set #provider as an array, coming Twitter first and then the "source"' do
|
36
|
+
@adapter[:provider].should == ["twitter", @tweet["source"]]
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'should set #url compiling the basic url with the "id" and the "user" > "screen_name"' do
|
40
|
+
@adapter[:url].should == "https://twitter.com/#{@tweet["user"]["screen_name"]}/status/#{@tweet["id"]}"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Fetcher::Microdata::PersonUser::Twitter::Coercer' do
|
4
|
+
context 'a valid twitter user hash is passed' do
|
5
|
+
before do
|
6
|
+
@user = JSON.parse File.read 'spec/user.json'
|
7
|
+
@result = ::Fetcher::Microdata::PersonUser::Twitter::Coercer.call @user
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'should initialize the additionalType as getfetcher.net/Item' do
|
11
|
+
@result[:additionalType].should == "http://getfetcher.net/Item"
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should assign to :id the "id"' do
|
15
|
+
@result[:id].should == @user["id"]
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should assign to :name the "name"' do
|
19
|
+
@result[:name].should == @user["name"]
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should assign to :dateRegistered the timestamp corresponding to "created_at"' do
|
23
|
+
@result[:dateRegistered].should == 1249685355
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should assign to :description the "description"' do
|
27
|
+
@result[:description].should == @user["description"]
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should assign to :url the "screen_name" after the twitter url' do
|
31
|
+
@result[:url].should == "https://twitter.com/#{@user["screen_name"]}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fetcher-microdata-twitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: discoverer
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: fetcher-microdata
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rspec
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,22 +94,18 @@ files:
|
|
78
94
|
- features/translate_tweet_to_schema.feature
|
79
95
|
- features/translate_user_to_schema.feature
|
80
96
|
- fetcher-microdata-twitter.gemspec
|
81
|
-
- lib/fetcher
|
82
|
-
- lib/fetcher/microdata/twitter/
|
83
|
-
- lib/fetcher/microdata/twitter/
|
97
|
+
- lib/fetcher-microdata-twitter.rb
|
98
|
+
- lib/fetcher/microdata/article_small/twitter/coercer.rb
|
99
|
+
- lib/fetcher/microdata/person_user/twitter/coercer.rb
|
84
100
|
- lib/fetcher/microdata/twitter/service.rb
|
85
101
|
- lib/fetcher/microdata/twitter/version.rb
|
86
|
-
-
|
87
|
-
-
|
88
|
-
- spec/fetcher/microdata/twitter/article_small_spec.rb
|
89
|
-
- spec/fetcher/microdata/twitter/person_user_spec.rb
|
102
|
+
- spec/fetcher/microdata/article_small/twitter/coercer_spec.rb
|
103
|
+
- spec/fetcher/microdata/person_user/twitter/coercer_spec.rb
|
90
104
|
- spec/fetcher/microdata/twitter/service_spec.rb
|
91
105
|
- spec/spec_helper.rb
|
92
106
|
- spec/tweet.json
|
93
107
|
- spec/user.json
|
94
108
|
- spec/viewer.json
|
95
|
-
- spec/writer/fetcher/microdata/twitter/article_small_spec.rb
|
96
|
-
- spec/writer/fetcher/microdata/twitter/person_user_spec.rb
|
97
109
|
- tweet.yaml
|
98
110
|
homepage: http://github.com/Fetcher/fetcher-microdata-twitter
|
99
111
|
licenses: []
|
@@ -109,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
121
|
version: '0'
|
110
122
|
segments:
|
111
123
|
- 0
|
112
|
-
hash: -
|
124
|
+
hash: -956730701
|
113
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
126
|
none: false
|
115
127
|
requirements:
|
@@ -118,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
130
|
version: '0'
|
119
131
|
segments:
|
120
132
|
- 0
|
121
|
-
hash: -
|
133
|
+
hash: -956730701
|
122
134
|
requirements: []
|
123
135
|
rubyforge_project:
|
124
136
|
rubygems_version: 1.8.24
|
@@ -130,12 +142,10 @@ test_files:
|
|
130
142
|
- features/support/env.rb
|
131
143
|
- features/translate_tweet_to_schema.feature
|
132
144
|
- features/translate_user_to_schema.feature
|
133
|
-
- spec/fetcher/microdata/twitter/
|
134
|
-
- spec/fetcher/microdata/twitter/
|
145
|
+
- spec/fetcher/microdata/article_small/twitter/coercer_spec.rb
|
146
|
+
- spec/fetcher/microdata/person_user/twitter/coercer_spec.rb
|
135
147
|
- spec/fetcher/microdata/twitter/service_spec.rb
|
136
148
|
- spec/spec_helper.rb
|
137
149
|
- spec/tweet.json
|
138
150
|
- spec/user.json
|
139
151
|
- spec/viewer.json
|
140
|
-
- spec/writer/fetcher/microdata/twitter/article_small_spec.rb
|
141
|
-
- spec/writer/fetcher/microdata/twitter/person_user_spec.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'discoverer'
|
2
|
-
require 'virtus'
|
3
|
-
require 'json'
|
4
|
-
require 'singleton'
|
5
|
-
|
6
|
-
require 'writer/fetcher/microdata/twitter/article_small'
|
7
|
-
require 'writer/fetcher/microdata/twitter/person_user'
|
8
|
-
|
9
|
-
require 'fetcher/microdata/twitter/article_small'
|
10
|
-
require 'fetcher/microdata/twitter/person_user'
|
11
|
-
|
12
|
-
require 'fetcher/microdata/twitter/service'
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Fetcher
|
2
|
-
module Microdata
|
3
|
-
module Twitter
|
4
|
-
class ArticleSmall
|
5
|
-
include Virtus
|
6
|
-
include Discoverer::Writer
|
7
|
-
|
8
|
-
attr_accessor :_type
|
9
|
-
|
10
|
-
attribute :additionalType
|
11
|
-
attribute :id
|
12
|
-
attribute :articleBody
|
13
|
-
attribute :author
|
14
|
-
attribute :viewer
|
15
|
-
attribute :dateCreated
|
16
|
-
attribute :provider
|
17
|
-
attribute :url
|
18
|
-
|
19
|
-
def initialize original_tweet, viewer
|
20
|
-
@_type = 'http://schema.org/Article/Small'
|
21
|
-
@additionalType = 'http://getfetcher.net/Item'
|
22
|
-
|
23
|
-
coerce original_tweet, viewer
|
24
|
-
end
|
25
|
-
|
26
|
-
def coerce original_tweet, viewer
|
27
|
-
@id = original_tweet["id"]
|
28
|
-
@articleBody = original_tweet["text"]
|
29
|
-
@author = PersonUser.new original_tweet["user"]
|
30
|
-
@viewer = PersonUser.new viewer
|
31
|
-
@dateCreated = Service.instance.created_at_to_timestamp original_tweet["created_at"]
|
32
|
-
@provider = ["twitter", original_tweet["source"]]
|
33
|
-
@url = "https://twitter.com/#{original_tweet["user"]["screen_name"]}/status/#{original_tweet["id"]}"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Fetcher
|
2
|
-
module Microdata
|
3
|
-
module Twitter
|
4
|
-
class PersonUser
|
5
|
-
include Virtus
|
6
|
-
include Discoverer::Writer
|
7
|
-
|
8
|
-
attr_reader :_type
|
9
|
-
|
10
|
-
attribute :additionalType
|
11
|
-
attribute :id
|
12
|
-
attribute :name
|
13
|
-
attribute :dateRegistered
|
14
|
-
attribute :description
|
15
|
-
attribute :url
|
16
|
-
|
17
|
-
def initialize twitter_user
|
18
|
-
@_type = "http://schema.org/Person/User"
|
19
|
-
|
20
|
-
coerce twitter_user
|
21
|
-
end
|
22
|
-
|
23
|
-
def coerce twitter_user
|
24
|
-
@additionalType = "http://getfetcher.net/Item"
|
25
|
-
@id = twitter_user["id"]
|
26
|
-
@name = twitter_user["name"]
|
27
|
-
@dateRegistered = Service.instance.created_at_to_timestamp twitter_user["created_at"]
|
28
|
-
@description = twitter_user["description"]
|
29
|
-
@url = "https://twitter.com/#{twitter_user["screen_name"]}"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module Writer
|
2
|
-
module Fetcher
|
3
|
-
module Microdata
|
4
|
-
module Twitter
|
5
|
-
class ArticleSmall
|
6
|
-
attr_accessor :source
|
7
|
-
|
8
|
-
def initialize the_source
|
9
|
-
@source = the_source
|
10
|
-
end
|
11
|
-
|
12
|
-
def hash
|
13
|
-
@attributes = @source.attributes
|
14
|
-
{
|
15
|
-
"type" => [@source._type],
|
16
|
-
"properties" => {
|
17
|
-
"additionalType" => [
|
18
|
-
@attributes[:additionalType]
|
19
|
-
],
|
20
|
-
"Item#id" => [
|
21
|
-
@attributes[:id]
|
22
|
-
],
|
23
|
-
"articleBody" => [
|
24
|
-
@attributes[:articleBody]
|
25
|
-
],
|
26
|
-
"author" => [
|
27
|
-
@attributes[:author].to.hash
|
28
|
-
],
|
29
|
-
"Item#viewer" => [
|
30
|
-
@attributes[:viewer].to.hash
|
31
|
-
],
|
32
|
-
"dateCreated" => [
|
33
|
-
@attributes[:dateCreated]
|
34
|
-
],
|
35
|
-
"provider" => @attributes[:provider],
|
36
|
-
"url" => [
|
37
|
-
@attributes[:url]
|
38
|
-
]
|
39
|
-
}
|
40
|
-
}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Writer
|
2
|
-
module Fetcher
|
3
|
-
module Microdata
|
4
|
-
module Twitter
|
5
|
-
class PersonUser
|
6
|
-
attr_reader :source
|
7
|
-
|
8
|
-
def initialize the_source
|
9
|
-
@source = the_source
|
10
|
-
end
|
11
|
-
|
12
|
-
def hash
|
13
|
-
@attributes = @source.attributes
|
14
|
-
{
|
15
|
-
"type" => [
|
16
|
-
@source._type
|
17
|
-
],
|
18
|
-
"properties" => {
|
19
|
-
"additionalType" => [
|
20
|
-
@attributes[:additionalType]
|
21
|
-
],
|
22
|
-
"Item#id" => [
|
23
|
-
@attributes[:id]
|
24
|
-
],
|
25
|
-
"name" => [
|
26
|
-
@attributes[:name]
|
27
|
-
],
|
28
|
-
"User#dateRegistered" => [
|
29
|
-
@attributes[:dateRegistered]
|
30
|
-
],
|
31
|
-
"description" => [
|
32
|
-
@attributes[:description]
|
33
|
-
],
|
34
|
-
"url" => [
|
35
|
-
@attributes[:url]
|
36
|
-
]
|
37
|
-
}
|
38
|
-
}
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Fetcher::Microdata::Twitter::ArticleSmall do
|
4
|
-
describe '.new' do
|
5
|
-
before do
|
6
|
-
@argument_stub = stub 'arg'
|
7
|
-
@viewer_stub = stub 'viewer'
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should receive two arguments' do
|
11
|
-
Fetcher::Microdata::Twitter::ArticleSmall.any_instance.stub :coerce
|
12
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new @argument_stub, @viewer_stub
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should set up the additionalType' do
|
16
|
-
Fetcher::Microdata::Twitter::ArticleSmall.any_instance.stub :coerce
|
17
|
-
adapter = Fetcher::Microdata::Twitter::ArticleSmall.new @argument_stub, @viewer_stub
|
18
|
-
adapter.additionalType.should == 'http://getfetcher.net/Item'
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should call coerce to coerce the values the argument values into the final form' do
|
22
|
-
Fetcher::Microdata::Twitter::ArticleSmall.any_instance.should_receive(:coerce)
|
23
|
-
.with @argument_stub, @viewer_stub
|
24
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new @argument_stub, @viewer_stub
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe '#_type' do
|
29
|
-
it 'should return the schema.org type' do
|
30
|
-
Fetcher::Microdata::Twitter::ArticleSmall.any_instance.stub :coerce
|
31
|
-
argument_stub = stub 'argument'
|
32
|
-
viewer_stub = stub 'viewer'
|
33
|
-
adapter = Fetcher::Microdata::Twitter::ArticleSmall.new argument_stub, viewer_stub
|
34
|
-
adapter._type.should == 'http://schema.org/Article/Small'
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe '#coerce' do
|
39
|
-
context 'the adapter receives a valid tweet and a valid viewer' do
|
40
|
-
before do
|
41
|
-
@tweet = JSON.parse File.read 'spec/tweet.json'
|
42
|
-
@viewer = JSON.parse File.read 'spec/viewer.json'
|
43
|
-
@adapter = Fetcher::Microdata::Twitter::ArticleSmall.new @tweet, @viewer
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should set #id with the value of "id"' do
|
47
|
-
@adapter.id.should == @tweet["id"]
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'should set #articleBody with the value of "text"' do
|
51
|
-
@adapter.articleBody.should == @tweet["text"]
|
52
|
-
end
|
53
|
-
|
54
|
-
it 'should set #author with the Person from the value of "user" > "name"' do
|
55
|
-
@adapter.author.attributes.should == Fetcher::Microdata::Twitter::PersonUser.new(@tweet["user"]).attributes
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'should set #viewer with the Person from the value of "user" > "name"' do
|
59
|
-
@adapter.viewer.attributes.should == Fetcher::Microdata::Twitter::PersonUser.new(@viewer).attributes
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'should set #dateCreated with the timestamp obtained from "created_at"' do
|
63
|
-
@adapter.dateCreated.should == 1329859747
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'should set #provider as an array, coming Twitter first and then the "source"' do
|
67
|
-
@adapter.provider.should == ["twitter", @tweet["source"]]
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should set #url compiling the basic url with the "id" and the "user" > "screen_name"' do
|
71
|
-
@adapter.url.should == "https://twitter.com/#{@tweet["user"]["screen_name"]}/status/#{@tweet["id"]}"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'should include Discoverer::Writer' do
|
77
|
-
Fetcher::Microdata::Twitter::ArticleSmall.ancestors.should include Discoverer::Writer
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'should include Virtus' do
|
81
|
-
Fetcher::Microdata::Twitter::ArticleSmall.ancestors.should include Virtus
|
82
|
-
end
|
83
|
-
|
84
|
-
describe 'attributes' do
|
85
|
-
before do
|
86
|
-
Fetcher::Microdata::Twitter::ArticleSmall.any_instance.stub :coerce
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'should set attribute additionalType' do
|
90
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
91
|
-
.attributes.should have_key :additionalType
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'should set attribute id' do
|
95
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
96
|
-
.attributes.should have_key :id
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'should set attribute articleBody' do
|
100
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
101
|
-
.attributes.should have_key :articleBody
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should set attribute author' do
|
105
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
106
|
-
.attributes.should have_key :author
|
107
|
-
end
|
108
|
-
|
109
|
-
it 'should set attribute viewer' do
|
110
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
111
|
-
.attributes.should have_key :viewer
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'should set attribute dateCreated' do
|
115
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
116
|
-
.attributes.should have_key :dateCreated
|
117
|
-
end
|
118
|
-
|
119
|
-
it 'should set attribute provider' do
|
120
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
121
|
-
.attributes.should have_key :provider
|
122
|
-
end
|
123
|
-
|
124
|
-
it 'should set attribute url' do
|
125
|
-
Fetcher::Microdata::Twitter::ArticleSmall.new(@argument_stub, @viewer_stub)
|
126
|
-
.attributes.should have_key :url
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Fetcher::Microdata::Twitter::PersonUser do
|
4
|
-
describe '.new' do
|
5
|
-
before do
|
6
|
-
@argument = stub 'argument'
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should accept an argument' do
|
10
|
-
Fetcher::Microdata::Twitter::PersonUser.any_instance.stub :coerce
|
11
|
-
Fetcher::Microdata::Twitter::PersonUser.new @argument
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should set the _type to schema.org/Person/User' do
|
15
|
-
Fetcher::Microdata::Twitter::PersonUser.any_instance.stub :coerce
|
16
|
-
person = Fetcher::Microdata::Twitter::PersonUser.new @argument
|
17
|
-
person._type.should == "http://schema.org/Person/User"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should call coerce with the argument' do
|
21
|
-
Fetcher::Microdata::Twitter::PersonUser.any_instance.should_receive(:coerce).with @argument
|
22
|
-
Fetcher::Microdata::Twitter::PersonUser.new @argument
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe '#coerce' do
|
27
|
-
context 'a valid twitter user hash is passed' do
|
28
|
-
before do
|
29
|
-
@user = JSON.parse File.read 'spec/user.json'
|
30
|
-
@person_user = Fetcher::Microdata::Twitter::PersonUser.new @user
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should initialize the additionalType as getfetcher.net/Item' do
|
34
|
-
@person_user.additionalType.should == "http://getfetcher.net/Item"
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'should assign to :id the "id"' do
|
38
|
-
@person_user.id.should == @user["id"]
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should assign to :name the "name"' do
|
42
|
-
@person_user.name.should == @user["name"]
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'should assign to :dateRegistered the timestamp corresponding to "created_at"' do
|
46
|
-
@person_user.dateRegistered.should == 1249685355
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'should assign to :description the "description"' do
|
50
|
-
@person_user.description.should == @user["description"]
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should assign to :url the "screen_name" after the twitter url' do
|
54
|
-
@person_user.url.should == "https://twitter.com/#{@user["screen_name"]}"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'should include Discoverer::Writer' do
|
60
|
-
Fetcher::Microdata::Twitter::PersonUser.ancestors.should include Discoverer::Writer
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should include Virtus' do
|
64
|
-
Fetcher::Microdata::Twitter::PersonUser.ancestors.should include Virtus
|
65
|
-
end
|
66
|
-
|
67
|
-
describe 'attributes' do
|
68
|
-
before do
|
69
|
-
@argument_stub = stub 'argument'
|
70
|
-
Fetcher::Microdata::Twitter::PersonUser.any_instance.stub :coerce
|
71
|
-
end
|
72
|
-
|
73
|
-
it 'should have the attribute additionalType' do
|
74
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :additionalType
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'should have the attribute id' do
|
78
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :id
|
79
|
-
end
|
80
|
-
|
81
|
-
it 'should have the attribute name' do
|
82
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :name
|
83
|
-
end
|
84
|
-
|
85
|
-
it 'should have the attribute dateRegistered' do
|
86
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :dateRegistered
|
87
|
-
end
|
88
|
-
|
89
|
-
it 'should have the attribute description' do
|
90
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :description
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'should have the attribute url' do
|
94
|
-
Fetcher::Microdata::Twitter::PersonUser.new(@argument_stub).attributes.should have_key :url
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
@@ -1,133 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Writer::Fetcher::Microdata::Twitter::ArticleSmall do
|
4
|
-
describe '#hash' do
|
5
|
-
before do
|
6
|
-
@schema_stub = stub 'schema'
|
7
|
-
@author_stub = stub 'author', :to => stub( :hash => nil)
|
8
|
-
@viewer_stub = stub 'viewer', :to => stub( :hash => nil)
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should return a hash with the type' do
|
12
|
-
final_hash = {
|
13
|
-
"type" => [
|
14
|
-
'the type'
|
15
|
-
]
|
16
|
-
}
|
17
|
-
@schema_stub.should_receive(:_type).and_return "the type"
|
18
|
-
@schema_stub.should_receive(:attributes).and_return stub('the hash', :[] => @author_stub)
|
19
|
-
|
20
|
-
writer = Writer::Fetcher::Microdata::Twitter::ArticleSmall.new @schema_stub
|
21
|
-
writer.hash.should include final_hash
|
22
|
-
end
|
23
|
-
|
24
|
-
describe 'properties hash' do
|
25
|
-
before do
|
26
|
-
@schema_stub.should_receive(:_type).and_return nil
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should include the additionalType' do
|
30
|
-
@properties_hash = {
|
31
|
-
"additionalType" => [
|
32
|
-
"http://getfetcher.net/Item"
|
33
|
-
]
|
34
|
-
}
|
35
|
-
@schema_stub.should_receive(:attributes)
|
36
|
-
.and_return :additionalType => "http://getfetcher.net/Item",
|
37
|
-
:author => @author_stub,
|
38
|
-
:viewer => @viewer_stub
|
39
|
-
end
|
40
|
-
|
41
|
-
it 'should include the Item#id' do
|
42
|
-
@properties_hash = {
|
43
|
-
"Item#id" => [
|
44
|
-
234536234
|
45
|
-
]
|
46
|
-
}
|
47
|
-
|
48
|
-
@schema_stub.should_receive(:attributes)
|
49
|
-
.and_return :id => 234536234, :author => @author_stub, :viewer => @viewer_stub
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'should include the articleBody' do
|
53
|
-
@properties_hash = {
|
54
|
-
"articleBody" => [
|
55
|
-
"some body"
|
56
|
-
]
|
57
|
-
}
|
58
|
-
|
59
|
-
@schema_stub.should_receive(:attributes)
|
60
|
-
.and_return :articleBody => "some body", :author => @author_stub, :viewer => @viewer_stub
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should include the author' do
|
64
|
-
@author = stub 'author'
|
65
|
-
@author_writer = stub 'author writer'
|
66
|
-
@author_writer.should_receive(:hash).and_return "hi Im the author"
|
67
|
-
@author.should_receive(:to).and_return @author_writer
|
68
|
-
@properties_hash = {
|
69
|
-
"author" => [
|
70
|
-
"hi Im the author"
|
71
|
-
]
|
72
|
-
}
|
73
|
-
|
74
|
-
@schema_stub.should_receive(:attributes)
|
75
|
-
.and_return :author => @author, :viewer => @viewer_stub
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'should include the viewer' do
|
79
|
-
@viewer = stub 'viewer'
|
80
|
-
@viewer_writer = stub 'viewer writer'
|
81
|
-
@viewer_writer.should_receive(:hash).and_return "hi Im the viewer"
|
82
|
-
@viewer.should_receive(:to).and_return @viewer_writer
|
83
|
-
@properties_hash = {
|
84
|
-
"Item#viewer" => [
|
85
|
-
"hi Im the viewer"
|
86
|
-
]
|
87
|
-
}
|
88
|
-
|
89
|
-
@schema_stub.should_receive(:attributes)
|
90
|
-
.and_return :viewer => @viewer, :author => @author_stub
|
91
|
-
end
|
92
|
-
|
93
|
-
it 'should include the dateCreated' do
|
94
|
-
@properties_hash = {
|
95
|
-
"dateCreated" => [
|
96
|
-
23456235
|
97
|
-
]
|
98
|
-
}
|
99
|
-
|
100
|
-
@schema_stub.should_receive(:attributes)
|
101
|
-
.and_return :dateCreated => 23456235, :author => @author_stub, :viewer => @viewer_stub
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'should include the provider' do
|
105
|
-
@properties_hash = {
|
106
|
-
"provider" => [
|
107
|
-
"twitter",
|
108
|
-
"fetcher"
|
109
|
-
]
|
110
|
-
}
|
111
|
-
|
112
|
-
@schema_stub.should_receive(:attributes)
|
113
|
-
.and_return :provider => ["twitter", "fetcher"], :author => @author_stub, :viewer => @viewer_stub
|
114
|
-
end
|
115
|
-
|
116
|
-
it 'should include the url' do
|
117
|
-
@properties_hash = {
|
118
|
-
"url" => [
|
119
|
-
"http://myurl.info"
|
120
|
-
]
|
121
|
-
}
|
122
|
-
|
123
|
-
@schema_stub.should_receive(:attributes)
|
124
|
-
.and_return :url => "http://myurl.info", :author => @author_stub, :viewer => @viewer_stub
|
125
|
-
end
|
126
|
-
|
127
|
-
after :each do
|
128
|
-
writer = Writer::Fetcher::Microdata::Twitter::ArticleSmall.new @schema_stub
|
129
|
-
writer.hash["properties"].should include @properties_hash
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Writer::Fetcher::Microdata::Twitter::PersonUser do
|
4
|
-
it 'should have a proper initializer to a Writer' do
|
5
|
-
user_stub = stub 'user'
|
6
|
-
writer = Writer::Fetcher::Microdata::Twitter::PersonUser.new user_stub
|
7
|
-
writer.source.should == user_stub
|
8
|
-
end
|
9
|
-
|
10
|
-
describe '#hash' do
|
11
|
-
before do
|
12
|
-
@user_stub = stub 'user'
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should return the type' do
|
16
|
-
final_hash = {
|
17
|
-
"type" => [
|
18
|
-
"some type"
|
19
|
-
]
|
20
|
-
}
|
21
|
-
|
22
|
-
@user_stub.should_receive(:_type).and_return "some type"
|
23
|
-
@user_stub.should_receive(:attributes).and_return stub :[] => nil
|
24
|
-
writer = Writer::Fetcher::Microdata::Twitter::PersonUser.new @user_stub
|
25
|
-
writer.hash.should include final_hash
|
26
|
-
end
|
27
|
-
|
28
|
-
describe 'properties hash' do
|
29
|
-
before do
|
30
|
-
@user_stub.should_receive :_type
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should include the additionalType' do
|
34
|
-
@properties_hash = {
|
35
|
-
"additionalType" => [
|
36
|
-
"http://getfetcher.net/Item"
|
37
|
-
]
|
38
|
-
}
|
39
|
-
@user_stub.should_receive(:attributes).and_return :additionalType => "http://getfetcher.net/Item"
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'should include the Item#id' do
|
43
|
-
@properties_hash = {
|
44
|
-
"Item#id" => [
|
45
|
-
234525
|
46
|
-
]
|
47
|
-
}
|
48
|
-
@user_stub.should_receive(:attributes).and_return :id => 234525
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should include the name' do
|
52
|
-
@properties_hash = {
|
53
|
-
"name" => [
|
54
|
-
"Marcus"
|
55
|
-
]
|
56
|
-
}
|
57
|
-
@user_stub.should_receive(:attributes).and_return :name => "Marcus"
|
58
|
-
end
|
59
|
-
|
60
|
-
it 'should include the dateRegistered' do
|
61
|
-
@properties_hash = {
|
62
|
-
"User#dateRegistered" => [
|
63
|
-
456468768
|
64
|
-
]
|
65
|
-
}
|
66
|
-
@user_stub.should_receive(:attributes).and_return :dateRegistered => 456468768
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'should include the description' do
|
70
|
-
@properties_hash = {
|
71
|
-
"description" => [
|
72
|
-
456468768
|
73
|
-
]
|
74
|
-
}
|
75
|
-
@user_stub.should_receive(:attributes).and_return :description => 456468768
|
76
|
-
end
|
77
|
-
|
78
|
-
it 'should include the url' do
|
79
|
-
@properties_hash = {
|
80
|
-
"url" => [
|
81
|
-
456468768
|
82
|
-
]
|
83
|
-
}
|
84
|
-
@user_stub.should_receive(:attributes).and_return :url => 456468768
|
85
|
-
end
|
86
|
-
|
87
|
-
after :each do
|
88
|
-
writer = Writer::Fetcher::Microdata::Twitter::PersonUser.new @user_stub
|
89
|
-
writer.hash["properties"].should include @properties_hash
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|