fetcher-microdata 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -19,6 +19,7 @@ module Fetcher
19
19
  attribute :dateCreated
20
20
  attribute :provider
21
21
  attribute :url
22
+ attribute :comments
22
23
  end
23
24
  end
24
25
  end
@@ -0,0 +1,22 @@
1
+ module Fetcher
2
+ class Microdata
3
+ class UserComments < Fetcher::Microdata
4
+
5
+ def initialize *args
6
+ if args.length == 2
7
+ super *args
8
+ else
9
+ raise ArgumentError, "Wrong number of arguments #{args.length} and 2 needed"
10
+ end
11
+ @_type = 'http://schema.org/UserComments'
12
+ end
13
+
14
+ attribute :additionalType
15
+ attribute :id
16
+ attribute :commentText
17
+ attribute :creator
18
+ attribute :commentTime
19
+
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  module Fetcher
2
2
  class Microdata
3
- VERSION = "0.0.10"
3
+ VERSION = "0.0.11"
4
4
  end
5
5
  end
@@ -40,7 +40,9 @@ require 'fetcher-microdata/version'
40
40
  require 'fetcher-microdata/person_user'
41
41
  require 'fetcher-microdata/article_small'
42
42
  require 'fetcher-microdata/review'
43
+ require 'fetcher-microdata/user_comments'
43
44
 
44
45
  require 'writer/fetcher-microdata/person_user'
45
46
  require 'writer/fetcher-microdata/article_small'
46
- require 'writer/fetcher-microdata/review'
47
+ require 'writer/fetcher-microdata/review'
48
+ require 'writer/fetcher-microdata/user_comments'
@@ -10,7 +10,7 @@ module Writer
10
10
 
11
11
  def hash
12
12
  @attributes = @source.attributes
13
- {
13
+ resp = {
14
14
  "type" => [@source._type],
15
15
  "properties" => {
16
16
  "additionalType" => [
@@ -28,6 +28,8 @@ module Writer
28
28
  "Item#viewer" => [
29
29
  @attributes[:viewer].to.hash
30
30
  ],
31
+ "UserComments" => [
32
+ ],
31
33
  "dateCreated" => [
32
34
  @attributes[:dateCreated]
33
35
  ],
@@ -37,6 +39,11 @@ module Writer
37
39
  ]
38
40
  }
39
41
  }
42
+ @attributes[:comments].each do |c|
43
+ resp["properties"]["UserComments"].push c.to.hash
44
+ end
45
+ resp
46
+
40
47
  end
41
48
  end
42
49
  end
@@ -0,0 +1,43 @@
1
+ module Writer
2
+ module Fetcher
3
+ module Microdata
4
+ class UserComments
5
+ attr_accessor :source
6
+
7
+ def initialize the_source
8
+ self.source = the_source
9
+ end
10
+
11
+ def hash
12
+ @attributes = @source.attributes
13
+ aux = @attributes[:id].split("_")
14
+ url = "https://www.facebook.com/#{aux[1]}?comment_id=#{aux[2]}"
15
+ {
16
+ "type" => [@source._type],
17
+ "properties" => {
18
+ "additionalType" => [
19
+ @attributes[:additionalType]
20
+ ],
21
+ "Item#id" => [
22
+ "#{@attributes[:id]}"
23
+ ],
24
+ "commentText" => [
25
+ @attributes[:commentText]
26
+ ],
27
+ "creator" => [
28
+ @attributes[:creator].to.hash
29
+ ],
30
+ "commentTime" => [
31
+ @attributes[:commentTime]
32
+ ],
33
+ "url" => [
34
+ url
35
+ ]
36
+ }
37
+
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -42,6 +42,11 @@ describe Fetcher::Microdata::ArticleSmall do
42
42
  .attributes.should have_key :articleBody
43
43
  end
44
44
 
45
+ it 'should set attribute comments' do
46
+ Fetcher::Microdata::ArticleSmall.new(@arg1, @arg2, @arg3)
47
+ .attributes.should have_key :comments
48
+ end
49
+
45
50
  it 'should set attribute author' do
46
51
  Fetcher::Microdata::ArticleSmall.new(@arg1, @arg2, @arg3)
47
52
  .attributes.should have_key :author
@@ -0,0 +1,55 @@
1
+ require 'spec_helper'
2
+
3
+ describe Fetcher::Microdata::UserComments do
4
+ describe '.new' do
5
+ it 'should set the _type to schema.org/UserComments' do
6
+ @arg = stub "arg"
7
+ article = Fetcher::Microdata::UserComments.new @arg, @argument
8
+ article._type.should == "http://schema.org/UserComments"
9
+ end
10
+ end
11
+
12
+ it 'should raise wrong number of argument if the count of arguments is distinct of 2' do
13
+ expect {
14
+ Fetcher::Microdata::UserComments.new "a", "b", "c", "d"
15
+ }.to raise_error
16
+ end
17
+
18
+ it 'should inherit from Fetcher::Microdata' do
19
+ Fetcher::Microdata::UserComments.superclass.should == Fetcher::Microdata
20
+ end
21
+
22
+ describe 'attributes' do
23
+ before do
24
+ @arg1 = stub "args1"
25
+ @arg2 = stub "args2"
26
+ Fetcher::Microdata::UserComments.any_instance.stub :coerce
27
+ end
28
+
29
+ it 'should set attribute additionalType' do
30
+ Fetcher::Microdata::UserComments.new(@arg1, @arg2)
31
+ .attributes.should have_key :additionalType
32
+ end
33
+
34
+ it 'should set attribute id' do
35
+ Fetcher::Microdata::UserComments.new(@arg1, @arg2)
36
+ .attributes.should have_key :id
37
+ end
38
+
39
+ it 'should set attribute commentText' do
40
+ Fetcher::Microdata::UserComments.new(@arg1, @arg2)
41
+ .attributes.should have_key :commentText
42
+ end
43
+
44
+ it 'should set attribute creator' do
45
+ Fetcher::Microdata::UserComments.new(@arg1, @arg2)
46
+ .attributes.should have_key :creator
47
+ end
48
+
49
+ it 'should set attribute commentTime' do
50
+ Fetcher::Microdata::UserComments.new(@arg1, @arg2)
51
+ .attributes.should have_key :commentTime
52
+ end
53
+
54
+ end
55
+ end
@@ -6,6 +6,33 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
6
6
  @schema_stub = stub 'schema'
7
7
  @author_stub = stub 'author', :to => stub( :hash => nil)
8
8
  @viewer_stub = stub 'viewer', :to => stub( :hash => nil)
9
+ @attr_stub = stub 'attr stub'
10
+ stub1 = stub 'coment1', :to => "hola1"
11
+ stub2 = stub 'coment2', :to => "hola2"
12
+
13
+ @attr_stub.stub(:[]) do |simbol|
14
+ if simbol == :author
15
+ @author_stub
16
+ elsif simbol == :viewer
17
+ @viewer_stub
18
+ elsif simbol == :comments
19
+ [stub1,stub2]
20
+ elsif simbol == :additionalType
21
+ "http://getfetcher.net/Item"
22
+ elsif simbol == :id
23
+ 234536234
24
+ elsif simbol == :articleBody
25
+ "some body"
26
+ elsif simbol == :dateCreated
27
+ 23456235
28
+ elsif simbol == :provider
29
+ ["twitter", "fetcher"]
30
+ elsif simbol == :url
31
+ "http://myurl.info"
32
+ else
33
+ stub('the hash', :[] => @attr_stub)
34
+ end
35
+ end
9
36
  end
10
37
 
11
38
  it 'should return a hash with the type' do
@@ -15,7 +42,7 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
15
42
  ]
16
43
  }
17
44
  @schema_stub.should_receive(:_type).and_return "the type"
18
- @schema_stub.should_receive(:attributes).and_return stub('the hash', :[] => @author_stub)
45
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
19
46
 
20
47
  writer = Writer::Fetcher::Microdata::ArticleSmall.new @schema_stub
21
48
  writer.hash.should include final_hash
@@ -32,10 +59,7 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
32
59
  "http://getfetcher.net/Item"
33
60
  ]
34
61
  }
35
- @schema_stub.should_receive(:attributes)
36
- .and_return :additionalType => "http://getfetcher.net/Item",
37
- :author => @author_stub,
38
- :viewer => @viewer_stub
62
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
39
63
  end
40
64
 
41
65
  it 'should include the Item#id' do
@@ -44,9 +68,19 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
44
68
  234536234
45
69
  ]
46
70
  }
71
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
72
+ end
73
+
74
+ it 'should include the UserComments' do
75
+ a = "hola1".hash
76
+ b = "hola2".hash
77
+ @properties_hash = {
78
+ "UserComments" => [
79
+ a,b
80
+ ]
81
+ }
47
82
 
48
- @schema_stub.should_receive(:attributes)
49
- .and_return :id => 234536234, :author => @author_stub, :viewer => @viewer_stub
83
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
50
84
  end
51
85
 
52
86
  it 'should include the articleBody' do
@@ -55,39 +89,33 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
55
89
  "some body"
56
90
  ]
57
91
  }
58
-
59
- @schema_stub.should_receive(:attributes)
60
- .and_return :articleBody => "some body", :author => @author_stub, :viewer => @viewer_stub
92
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
61
93
  end
62
94
 
63
95
  it 'should include the author' do
64
- @author = stub 'author'
65
96
  @author_writer = stub 'author writer'
66
97
  @author_writer.should_receive(:hash).and_return "hi Im the author"
67
- @author.should_receive(:to).and_return @author_writer
98
+ @author_stub.should_receive(:to).and_return @author_writer
68
99
  @properties_hash = {
69
100
  "author" => [
70
101
  "hi Im the author"
71
102
  ]
72
103
  }
73
104
 
74
- @schema_stub.should_receive(:attributes)
75
- .and_return :author => @author, :viewer => @viewer_stub
105
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
76
106
  end
77
107
 
78
108
  it 'should include the viewer' do
79
- @viewer = stub 'viewer'
80
109
  @viewer_writer = stub 'viewer writer'
81
110
  @viewer_writer.should_receive(:hash).and_return "hi Im the viewer"
82
- @viewer.should_receive(:to).and_return @viewer_writer
111
+ @viewer_stub.should_receive(:to).and_return @viewer_writer
83
112
  @properties_hash = {
84
113
  "Item#viewer" => [
85
114
  "hi Im the viewer"
86
115
  ]
87
116
  }
88
117
 
89
- @schema_stub.should_receive(:attributes)
90
- .and_return :viewer => @viewer, :author => @author_stub
118
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
91
119
  end
92
120
 
93
121
  it 'should include the dateCreated' do
@@ -97,8 +125,7 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
97
125
  ]
98
126
  }
99
127
 
100
- @schema_stub.should_receive(:attributes)
101
- .and_return :dateCreated => 23456235, :author => @author_stub, :viewer => @viewer_stub
128
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
102
129
  end
103
130
 
104
131
  it 'should include the provider' do
@@ -109,8 +136,7 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
109
136
  ]
110
137
  }
111
138
 
112
- @schema_stub.should_receive(:attributes)
113
- .and_return :provider => ["twitter", "fetcher"], :author => @author_stub, :viewer => @viewer_stub
139
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
114
140
  end
115
141
 
116
142
  it 'should include the url' do
@@ -119,9 +145,7 @@ describe Writer::Fetcher::Microdata::ArticleSmall do
119
145
  "http://myurl.info"
120
146
  ]
121
147
  }
122
-
123
- @schema_stub.should_receive(:attributes)
124
- .and_return :url => "http://myurl.info", :author => @author_stub, :viewer => @viewer_stub
148
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
125
149
  end
126
150
 
127
151
  after :each do
@@ -0,0 +1,117 @@
1
+ require 'spec_helper'
2
+
3
+ describe Writer::Fetcher::Microdata::UserComments do
4
+ describe '#hash' do
5
+ before do
6
+ @schema_stub = stub 'schema'
7
+ @creator_stub = stub 'author', :to => stub( :hash => nil)
8
+ @viewer_stub = stub 'viewer', :to => stub( :hash => nil)
9
+ @attr_stub = stub 'attr stub'
10
+ stub1 = stub 'coment1', :to => "hola1"
11
+ stub2 = stub 'coment2', :to => "hola2"
12
+
13
+ @attr_stub.stub(:[]) do |simbol|
14
+ if simbol == :creator
15
+ @creator_stub
16
+ elsif simbol == :additionalType
17
+ "http://getfetcher.net/Item"
18
+ elsif simbol == :id
19
+ "234536234_12345_1234567"
20
+ elsif simbol == :commentText
21
+ "some body"
22
+ elsif simbol == :creator
23
+ ["twitter", "fetcher"]
24
+ elsif simbol == :commentTime
25
+ 23456235
26
+ elsif simbol == :url
27
+ "http://myurl.info"
28
+ else
29
+ stub('the hash', :[] => @attr_stub)
30
+ end
31
+ end
32
+ end
33
+
34
+ it 'should return a hash with the type' do
35
+ final_hash = {
36
+ "type" => [
37
+ 'the type'
38
+ ]
39
+ }
40
+ @schema_stub.should_receive(:_type).and_return "the type"
41
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
42
+
43
+ writer = Writer::Fetcher::Microdata::UserComments.new @schema_stub
44
+ writer.hash.should include final_hash
45
+ end
46
+
47
+ describe 'properties hash' do
48
+ before do
49
+ @schema_stub.should_receive(:_type).and_return nil
50
+ end
51
+
52
+ it 'should include the additionalType' do
53
+ @properties_hash = {
54
+ "additionalType" => [
55
+ "http://getfetcher.net/Item"
56
+ ]
57
+ }
58
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
59
+ end
60
+
61
+ it 'should include the Item#id' do
62
+ @properties_hash = {
63
+ "Item#id" => [
64
+ "234536234_12345_1234567"
65
+ ]
66
+ }
67
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
68
+ end
69
+
70
+ it 'should include the commentText' do
71
+ @properties_hash = {
72
+ "commentText" => [
73
+ "some body"
74
+ ]
75
+ }
76
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
77
+ end
78
+
79
+ it 'should include the creator' do
80
+ @creator_writer = stub 'creator writer'
81
+ @creator_writer.should_receive(:hash).and_return "hi Im the creator"
82
+ @creator_stub.should_receive(:to).and_return @creator_writer
83
+ @properties_hash = {
84
+ "creator" => [
85
+ "hi Im the creator"
86
+ ]
87
+ }
88
+
89
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
90
+ end
91
+
92
+ it 'should include the commentTime' do
93
+ @properties_hash = {
94
+ "commentTime" => [
95
+ 23456235
96
+ ]
97
+ }
98
+
99
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
100
+ end
101
+
102
+ it 'should include the url' do
103
+ @properties_hash = {
104
+ "url" => [
105
+ "https://www.facebook.com/12345?comment_id=1234567"
106
+ ]
107
+ }
108
+ @schema_stub.should_receive(:attributes).and_return @attr_stub
109
+ end
110
+
111
+ after :each do
112
+ writer = Writer::Fetcher::Microdata::UserComments.new @schema_stub
113
+ writer.hash["properties"].should include @properties_hash
114
+ end
115
+ end
116
+ end
117
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fetcher-microdata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
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-12-03 00:00:00.000000000 Z
12
+ date: 2012-12-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: discoverer
@@ -77,18 +77,22 @@ files:
77
77
  - lib/fetcher-microdata/article_small.rb
78
78
  - lib/fetcher-microdata/person_user.rb
79
79
  - lib/fetcher-microdata/review.rb
80
+ - lib/fetcher-microdata/user_comments.rb
80
81
  - lib/fetcher-microdata/version.rb
81
82
  - lib/writer/fetcher-microdata/article_small.rb
82
83
  - lib/writer/fetcher-microdata/person_user.rb
83
84
  - lib/writer/fetcher-microdata/review.rb
85
+ - lib/writer/fetcher-microdata/user_comments.rb
84
86
  - spec/fetcher/microdata/article_small_spec.rb
85
87
  - spec/fetcher/microdata/person_user_spec.rb
86
88
  - spec/fetcher/microdata/review_spec.rb
89
+ - spec/fetcher/microdata/user_comments_spec.rb
87
90
  - spec/fetcher/microdata_spec.rb
88
91
  - spec/spec_helper.rb
89
92
  - spec/writer/fetcher/microdata/article_small_spec.rb
90
93
  - spec/writer/fetcher/microdata/person_user_spec.rb
91
94
  - spec/writer/fetcher/microdata/review_spec.rb
95
+ - spec/writer/fetcher/microdata/user_comments_spec.rb
92
96
  homepage: http://github.com/Fetcher/fetcher-microdata
93
97
  licenses: []
94
98
  post_install_message:
@@ -117,8 +121,10 @@ test_files:
117
121
  - spec/fetcher/microdata/article_small_spec.rb
118
122
  - spec/fetcher/microdata/person_user_spec.rb
119
123
  - spec/fetcher/microdata/review_spec.rb
124
+ - spec/fetcher/microdata/user_comments_spec.rb
120
125
  - spec/fetcher/microdata_spec.rb
121
126
  - spec/spec_helper.rb
122
127
  - spec/writer/fetcher/microdata/article_small_spec.rb
123
128
  - spec/writer/fetcher/microdata/person_user_spec.rb
124
129
  - spec/writer/fetcher/microdata/review_spec.rb
130
+ - spec/writer/fetcher/microdata/user_comments_spec.rb