hyperfeed 0.0.1 → 0.0.2

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.
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe Hyperfeed do
4
+
5
+ let(:url) { "http://quatrorodas.abril.com.br/lst_mob.xml" }
6
+ #let(:url_page) { "http://quatrorodas.abril.com.br/lst_mob.xml?page=2" }
7
+ #let(:url_per_page) { "http://quatrorodas.abril.com.br/lst_mob.xml?per_page=20" }
8
+ let(:resource_id) {"f91f93b7061233a9c13c20376c450012"}
9
+
10
+ context "with response code equal 200" do
11
+ before do
12
+ register_uri(:get, url, :body => fixture("lst_mob.xml"))
13
+ end
14
+
15
+ subject { Hyperfeed::Client.at(url).get }
16
+ its(:per_page) { should == 10 }
17
+ its(:current_page) { should == 1 }
18
+ its(:total_pages) { should == 35 }
19
+ its(:total_results) { should == 350 }
20
+
21
+ context "#result" do
22
+ def subject
23
+ super.result.first
24
+ end
25
+
26
+ its(:id) { should == "f91f93b7061233a9c13c20376c450012" }
27
+ its(:pubdate) { should == "10/05/2013" }
28
+ its(:title) { should == "BMW e maior marca do mundo, diz Forbes" }
29
+ its(:source) { should == "QUATRO RODAS" }
30
+ end
31
+ end
32
+
33
+ context "with per_page param" do
34
+ before do
35
+ register_uri(:get, url, :body => fixture("lst_mob.xml"))
36
+ end
37
+
38
+ subject { Hyperfeed::Client.at(url, :per_page => 20).get }
39
+ its(:per_page) { should == 20 }
40
+ it { subject.result.size.should == 20 }
41
+ its(:current_page) { should == 1 }
42
+ its(:total_pages) { should == 18 }
43
+ its(:total_results) { should == 350 }
44
+ end
45
+
46
+ context "with page param" do
47
+ before do
48
+ register_uri(:get, url, :body => fixture("lst_mob.xml"))
49
+ end
50
+
51
+ subject { Hyperfeed::Client.at(url, :page => 2).get }
52
+ its(:per_page) { should == 10 }
53
+ its(:current_page) { should == 2 }
54
+ its(:total_pages) { should == 35 }
55
+ its(:total_results) { should == 350 }
56
+ end
57
+
58
+ context "with item" do
59
+ before do
60
+ register_uri(:get, url, :body => fixture("lst_mob.xml"))
61
+ end
62
+
63
+ subject { Hyperfeed::Client.at(url).get(resource_id) }
64
+ its(:title) { should == "BMW e maior marca do mundo, diz Forbes" }
65
+ its(:id) { should == "f91f93b7061233a9c13c20376c450012" }
66
+ its(:subtitle) { should == "Empresa e a unica montadora no top 10" }
67
+ its(:category) { should == "mercado" }
68
+ its(:author) { should == "Vitor Matsubara" }
69
+ its(:enclosure) { should be_a Array }
70
+
71
+ context "item enclosure" do
72
+ def subject
73
+ super.enclosure
74
+ end
75
+ its(:size) { should == 1 }
76
+
77
+ it { subject.first.url.should == "http://quatrorodas.abril.com.br/100513_bmw1.jpg" }
78
+ it { subject.first.type.should == "image/jpeg" }
79
+ it { subject.first.title.should == "BMW e maior marca do mundo, diz Forbes" }
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,17 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV["RAILS_ENV"] ||= 'test'
3
+ require 'rspec'
4
+ require 'hyperfeed'
5
+ require 'fakeweb'
6
+
7
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
8
+ RSpec.configure do |config|
9
+ def fixture(name)
10
+ File.read("#{File.dirname(__FILE__)}/fixtures/#{name}")
11
+ end
12
+
13
+ def register_uri(method, uri, options = {})
14
+ options.merge!(:content_type => "application/xml") unless options[:content_type].nil?
15
+ FakeWeb.register_uri(method, uri, options)
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hyperfeed
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-05 00:00:00.000000000 Z
12
+ date: 2013-05-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: http_monkey
16
- requirement: &70347311578380 !ruby/object:Gem::Requirement
16
+ requirement: &70150867271620 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ! '>='
19
+ - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: '0.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70347311578380
24
+ version_requirements: *70150867271620
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70347311577860 !ruby/object:Gem::Requirement
27
+ requirement: &70150867271120 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '1.5'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70150867271120
36
+ - !ruby/object:Gem::Dependency
37
+ name: methodize
38
+ requirement: &70150867270740 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,21 @@ dependencies:
32
43
  version: '0'
33
44
  type: :runtime
34
45
  prerelease: false
35
- version_requirements: *70347311577860
46
+ version_requirements: *70150867270740
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &70150867270280 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *70150867270280
36
58
  - !ruby/object:Gem::Dependency
37
- name: ruby-debug19
38
- requirement: &70347311577360 !ruby/object:Gem::Requirement
59
+ name: fakeweb
60
+ requirement: &70150867269780 !ruby/object:Gem::Requirement
39
61
  none: false
40
62
  requirements:
41
63
  - - ! '>='
@@ -43,7 +65,7 @@ dependencies:
43
65
  version: '0'
44
66
  type: :development
45
67
  prerelease: false
46
- version_requirements: *70347311577360
68
+ version_requirements: *70150867269780
47
69
  description: An adapter to plug feeds content on hypermedia engines
48
70
  email:
49
71
  - guilherme.kato@abril.com.br
@@ -58,11 +80,12 @@ files:
58
80
  - Rakefile
59
81
  - hyperfeed.gemspec
60
82
  - lib/hyperfeed.rb
61
- - lib/hyperfeed/discover.rb
62
- - lib/hyperfeed/middleware/adapter_middleware.rb
63
83
  - lib/hyperfeed/resource_builder.rb
64
84
  - lib/hyperfeed/version.rb
65
- homepage: ''
85
+ - spec/fixtures/lst_mob.xml
86
+ - spec/hyperfeed/hyperfeed_spec.rb
87
+ - spec/spec_helper.rb
88
+ homepage: https://github.com/gkato/hyperfeed
66
89
  licenses: []
67
90
  post_install_message:
68
91
  rdoc_options: []
@@ -86,4 +109,7 @@ rubygems_version: 1.8.15
86
109
  signing_key:
87
110
  specification_version: 3
88
111
  summary: An adapter to plug feeds content on hypermedia engines
89
- test_files: []
112
+ test_files:
113
+ - spec/fixtures/lst_mob.xml
114
+ - spec/hyperfeed/hyperfeed_spec.rb
115
+ - spec/spec_helper.rb
@@ -1,20 +0,0 @@
1
- module Hyperfeed
2
- class Discover
3
-
4
- include Hyperfeed::ResourceBuilder
5
-
6
- def initialize(url, rss)
7
- @url = url
8
- @rss = rss
9
- end
10
-
11
- def hyperfeed
12
- if @url =~ /resource_id=([0-9]+)/
13
- hyperfeed = get_resource(@rss, @url, $1.to_i)
14
- else
15
- hyperfeed = retrieve_resources_list(@rss, @url, {})
16
- end
17
- end
18
-
19
- end
20
- end
@@ -1,22 +0,0 @@
1
- module Hyperfeed
2
- class AdapterMiddleware
3
-
4
- def initialize(app)
5
- @app = app
6
- end
7
-
8
- def call(env)
9
- code, headers, body = @app.call(env)
10
-
11
- url = env.uri.to_s
12
- rss = Nokogiri::XML(body)
13
-
14
- discover = Hyperfeed::Discover.new(url, rss)
15
- HttpMonkey::Client::Response.inject_with(:hyperfeed, discover.hyperfeed)
16
-
17
- [code, headers, body]
18
- end
19
-
20
- end
21
- end
22
-