philologic-client 0.0.1

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,132 @@
1
+ # encoding: utf-8
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'philologic-client'
7
+ require 'test/unit'
8
+ require 'mocha'
9
+
10
+ class TestPhilologicClient < Test::Unit::TestCase
11
+
12
+ def setup
13
+ @test_dir = File.expand_path( File.dirname(__FILE__) )
14
+ @data_dir = File.expand_path( File.join( @test_dir, 'data' ) )
15
+
16
+ @doc_path = 'doc_file.html'
17
+ @doc_file = File.join( @data_dir, @doc_path )
18
+ @endpoint = @data_dir
19
+ @root_path = 'root_file.html'
20
+ @root_file = File.join( @data_dir, @root_path )
21
+ end
22
+
23
+
24
+ # TODO Is there a point to this?
25
+ def test_initialization
26
+ blockable = false
27
+ client = Philologic::Client.new do |client|
28
+ assert_kind_of Philologic::Client, client
29
+ blockable = true
30
+ end
31
+ assert blockable, 'works as block'
32
+ assert_kind_of Philologic::Client, client
33
+ assert_kind_of Philologic::Client, Philologic::Client.new
34
+ end
35
+
36
+ def test_endpoint_accessor
37
+ Philologic::Client.new do |client|
38
+ assert_nil client.endpoint, 'defaults to nil'
39
+ assert_equal @endpoint, client.endpoint = @endpoint, 'returns value on set'
40
+ assert_equal @endpoint, client.endpoint, 'returns value on get'
41
+ end
42
+ end
43
+
44
+ def test_get_children_without_an_endpoint
45
+ Philologic::Client.new do |client|
46
+ assert_raises(RuntimeError) { client.children }
47
+ end
48
+ end
49
+
50
+ def test_get_document_without_an_endpoint
51
+ Philologic::Client.new do |client|
52
+ assert_raises(RuntimeError) { client.document }
53
+ end
54
+ end
55
+
56
+ def test_get_children
57
+ Philologic::Client.new do |client|
58
+ children = client.send(:_parse, Nokogiri::HTML( open(@root_file) ) )
59
+ client.stubs(:_get).with('/').returns(children)
60
+ assert_equal children, client.children
61
+ end
62
+ end
63
+
64
+ def test_get_document
65
+ Philologic::Client.new do |client|
66
+ doc = client.send( :_parse, Nokogiri::HTML( open(@doc_file) ) )
67
+ client.expects(:_get).with(@doc_path).returns(doc)
68
+ assert_equal doc, client.document(@doc_path)
69
+ end
70
+ end
71
+
72
+ def test_parse_children
73
+ Philologic::Client.new do |client|
74
+ client.endpoint = @endpoint
75
+ children = client.children(@root_path)
76
+ assert_not_nil children
77
+ assert_kind_of Array, children
78
+ assert_equal 1845, children.size
79
+ children.each do |child|
80
+ assert_kind_of Philologic::Link, child
81
+ assert_equal 'philologic_cite', child['class']
82
+ assert_not_nil child['href']
83
+ assert_nil child['some random attribute']
84
+ assert_not_nil child['author']
85
+ assert_not_nil child['filename']
86
+ assert_not_nil child['title']
87
+ assert_raise(NoMethodError) { child.text }
88
+ end
89
+
90
+ assert_equal './1/0/0/0/0/0/0', children.first['href']
91
+ assert_equal 'Conon, de Béthune, ca. 1160-1219 or 20.', children.first['author']
92
+ assert_equal 'Les Chansons', children.first['title']
93
+ assert_equal 'TLF.0.tei', children.first['filename']
94
+ assert_raise(NoMethodError) { children.first.text }
95
+
96
+ assert_equal './1845/0/0/0/0/0/0', children.last['href']
97
+ assert_equal 'Sartre J.-P.', children.last['author']
98
+ assert_equal 'Les Mots', children.last['title']
99
+ assert_equal 'TLF.1879.tei', children.last['filename']
100
+ assert_raise(NoMethodError) { children.last.text }
101
+
102
+ end
103
+ end
104
+
105
+ def test_parse_document
106
+ Philologic::Client.new do |client|
107
+ client.endpoint = @endpoint
108
+ doc = client.document(@doc_path)
109
+ assert_not_nil doc
110
+ assert_kind_of Philologic::Document, doc
111
+ assert_equal 'philologic_object', doc['class']
112
+ assert_nil doc['some random attribute']
113
+ assert_kind_of String, doc.text
114
+ assert_match /^Conon, de Béthune/, doc.text
115
+ assert_match /verité." $/, doc.text
116
+ end
117
+ end
118
+
119
+ def test_get_document_from_cite
120
+ Philologic::Client.new do |client|
121
+ client.endpoint = @endpoint
122
+ child = client.children(@root_path).first
123
+ assert_not_nil child
124
+ assert_kind_of Philologic::Link, child
125
+ doc = client.send( :_parse, Nokogiri::HTML( open(@doc_file) ) )
126
+ client.stubs(:_get).with('./1/0/0/0/0/0/0').returns(doc) # TODO Improve
127
+ assert_equal doc, client.document( child['href'] )
128
+ end
129
+ end
130
+
131
+ end
132
+
metadata ADDED
@@ -0,0 +1,120 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: philologic-client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - blair christensen
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70142289748640 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *70142289748640
25
+ - !ruby/object:Gem::Dependency
26
+ name: mocha
27
+ requirement: &70142289748200 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *70142289748200
36
+ - !ruby/object:Gem::Dependency
37
+ name: rdoc-readme
38
+ requirement: &70142289747780 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *70142289747780
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: &70142289747360 !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: *70142289747360
58
+ - !ruby/object:Gem::Dependency
59
+ name: nokogiri
60
+ requirement: &70142289746940 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: *70142289746940
69
+ description: Ruby client for interacting with the Philologic API.
70
+ email:
71
+ - blair.christensen@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - .gitignore
77
+ - Gemfile
78
+ - HISTORY.rdoc
79
+ - README.rdoc
80
+ - Rakefile
81
+ - lib/philologic-client.rb
82
+ - lib/philologic-client/version.rb
83
+ - philologic-client.gemspec
84
+ - test/data/doc_file.html
85
+ - test/data/root_file.html
86
+ - test/test_philologic_client.rb
87
+ homepage: https://github.com/blairc/philologic-client/
88
+ licenses: []
89
+ post_install_message:
90
+ rdoc_options: []
91
+ require_paths:
92
+ - lib
93
+ required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ segments:
100
+ - 0
101
+ hash: -4536869558672298571
102
+ required_rubygems_version: !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ segments:
109
+ - 0
110
+ hash: -4536869558672298571
111
+ requirements: []
112
+ rubyforge_project: philologic-client
113
+ rubygems_version: 1.8.7
114
+ signing_key:
115
+ specification_version: 3
116
+ summary: Ruby client for interacting with the Philologic API.
117
+ test_files:
118
+ - test/data/doc_file.html
119
+ - test/data/root_file.html
120
+ - test/test_philologic_client.rb