autopagerize 0.0.1 → 0.1.0

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.
@@ -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: