autopagerize 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,4 +21,5 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency "nokogiri"
22
22
  gem.add_development_dependency "rspec"
23
23
  gem.add_development_dependency "multi_json"
24
+ gem.add_development_dependency "simplecov"
24
25
  end
@@ -1,4 +1,4 @@
1
- #require "autopagerize/version"
1
+ require "autopagerize/version"
2
2
  require "addressable/uri"
3
3
  require "nokogiri"
4
4
  require "httpclient"
@@ -46,8 +46,9 @@ class Autopagerize
46
46
  end
47
47
  end
48
48
 
49
- def processed_document
50
- @processed_document ||= begin
49
+ def process
50
+ @processed ||= begin
51
+ return true unless site
51
52
  result = document.dup
52
53
 
53
54
  # Insert rule:
@@ -68,13 +69,23 @@ class Autopagerize
68
69
  @processed_page_elements << current.page
69
70
  end
70
71
  point.remove
71
- result
72
+ @processed_document = result
73
+ true
72
74
  end
73
75
  end
74
76
 
77
+ def processed?
78
+ @processed
79
+ end
80
+
81
+ def processed_document
82
+ process
83
+ @processed_document || document
84
+ end
85
+
75
86
  def processed_page_elements
76
- processed_document
77
- @processed_page_elements
87
+ process
88
+ @processed_page_elements || []
78
89
  end
79
90
 
80
91
  def processed_html
@@ -100,6 +111,7 @@ class Autopagerize
100
111
  end
101
112
 
102
113
  def page
114
+ return nil unless site
103
115
  document.xpath(site["data"]["pageElement"]).last
104
116
  end
105
117
  alias :page_element :page
@@ -1,3 +1,3 @@
1
1
  class Autopagerize
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -29,7 +29,7 @@ describe Autopagerize do
29
29
  MultiJson.load(json)
30
30
  end
31
31
 
32
- it "should autopagerize" do
32
+ let(:mock_pages) do
33
33
  first = <<-HTML
34
34
  <!doctype html>
35
35
  <page>first page</page>
@@ -47,10 +47,91 @@ describe Autopagerize do
47
47
  <page>final page</page>
48
48
  HTML
49
49
 
50
+ [first, second, third]
51
+ end
52
+
53
+ let(:client) do
50
54
  client = HTTPClient.new
51
- client.test_loopback_response << first << second << third
55
+ mock_pages.each do |html|
56
+ client.test_loopback_response << html
57
+ end
58
+ client
59
+ end
60
+
61
+ it "#processed?" do
52
62
  a = Autopagerize.new("http://bar/", siteinfo, :httpclient => client)
53
- a.nextlink.should == "http://bar/next.html"
54
- a.to_enum.to_a.length.should == 3
63
+ a.processed?.should be_false
64
+ a.process
65
+ a.processed?.should be_true
66
+ end
67
+
68
+ context "found" do
69
+ let(:autopagerize) do
70
+ Autopagerize.new("http://bar/", siteinfo, :httpclient => client)
71
+ end
72
+
73
+ it "#processed_document" do
74
+ doc = autopagerize.processed_document
75
+ doc.xpath('//page').length.should == 3
76
+ end
77
+
78
+ it "#processed_page_elements" do
79
+ autopagerize.processed_page_elements.length.should == 3
80
+ end
81
+
82
+ it "#each" do
83
+ autopagerize.to_enum.to_a.length.should == 3
84
+ end
85
+
86
+ it "#nextlink" do
87
+ autopagerize.nextlink.should == "http://bar/next.html"
88
+ end
89
+
90
+ it "#next" do
91
+ autopagerize.next.class.should == Autopagerize
92
+ end
93
+
94
+ it "#html" do
95
+ autopagerize.html.should == mock_pages.first
96
+ end
97
+
98
+ it "#page_element" do
99
+ page = autopagerize.page_element
100
+ page.node_name.should == "page"
101
+ end
102
+ end
103
+
104
+ context "not found" do
105
+ let(:autopagerize) do
106
+ Autopagerize.new("http://unknown/", siteinfo, :httpclient => client)
107
+ end
108
+
109
+ it "#processed_document equals #document" do
110
+ autopagerize.processed_document.should == autopagerize.document
111
+ end
112
+
113
+ it "#processed_page_elements equals []" do
114
+ autopagerize.processed_page_elements.should == []
115
+ end
116
+
117
+ it "#page_element" do
118
+ autopagerize.page_element.should be_nil
119
+ end
120
+
121
+ it "#nextlink" do
122
+ autopagerize.nextlink.should be_nil
123
+ end
124
+
125
+ it "#next" do
126
+ autopagerize.next.should be_nil
127
+ end
128
+
129
+ it "#each" do
130
+ autopagerize.to_enum.to_a.should == [autopagerize]
131
+ end
132
+
133
+ it "#html" do
134
+ autopagerize.html.should == mock_pages.first
135
+ end
55
136
  end
56
137
  end
@@ -1,8 +1,15 @@
1
1
  # -- coding: utf-8
2
2
 
3
3
  require "rubygems"
4
+
5
+ if ENV["COVERAGE"]
6
+ require "simplecov"
7
+ SimpleCov.start
8
+ end
9
+
4
10
  require "bundler/setup"
5
11
  Bundler.require :default, :test, :development
12
+
6
13
  require "rspec-expectations"
7
14
  require "rspec/matchers/built_in/be"
8
15
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autopagerize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
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-11 00:00:00.000000000 Z
12
+ date: 2012-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: addressable
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: simplecov
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description: Concat paginated web pages to single page
95
111
  email:
96
112
  - k@uu59.org
@@ -135,4 +151,3 @@ summary: Concat paginated web pages to single page
135
151
  test_files:
136
152
  - spec/autopagerize_spec.rb
137
153
  - spec/spec_helper.rb
138
- has_rdoc: