gares 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.
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+
3
+ require 'spec_helper'
4
+
5
+ # This test uses "Lyon Part-Dieu" as a testing sample:
6
+ #
7
+ # http://www.gares-en-mouvement.com/fr/frlpd/votre-gare/
8
+ #
9
+
10
+ describe Gares::Gare do
11
+
12
+ describe 'valid gare' do
13
+
14
+ before(:each) do
15
+ # Get gare de Lyon Part-Dieu
16
+ @gare = Gares::Gare.new('frlpd')
17
+ end
18
+
19
+ it 'should find the name' do
20
+ name = @gare.name
21
+
22
+ expect(name).to eql('Lyon Part Dieu')
23
+ end
24
+ end
25
+
26
+ describe 'with name that has utf-8 characters' do
27
+ # Belleville sur Sâone
28
+ before(:each) do
29
+ @gare = Gares::Gare.search('Saone').first
30
+ end
31
+
32
+ it 'should give the proper name' do
33
+ expect(@gare.name).to eql('Belleville sur Sâone')
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gares::Search do
4
+ context 'with multiple search results' do
5
+ before(:each) do
6
+ @search = Gares::Search.new('Aix')
7
+ end
8
+
9
+ it 'should remember the query' do
10
+ expect(@search.query).to eql('Aix')
11
+ end
12
+
13
+ it 'should find 5 results' do
14
+ expect(@search.gares.size).to eql(7)
15
+ end
16
+
17
+ it 'should return Gares::Gare objects only' do
18
+ expect(@search.gares).to all(be_an(Gares::Gare))
19
+ end
20
+
21
+ it 'should not return gares with no name' do
22
+ @search.gares.each { |gare| expect(gare.name).to_not be_blank }
23
+ end
24
+
25
+ it 'should return only the name of the result' do
26
+ expect(@search.gares.first.name).to eql('Aix en Provence')
27
+ end
28
+ end
29
+
30
+ context 'with an exact match' do
31
+ it 'should not raise an exception' do
32
+ expect do
33
+ @search = Gares::Search.new('Paris Austerlitz').gares
34
+ end.not_to raise_error
35
+ end
36
+
37
+ it 'should return the movie slug correctly' do
38
+ @search = Gares::Search.new('Paris Austerlitz')
39
+ expect(@search.gares.first.slug).to eql('frpaz')
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,40 @@
1
+ # By default if you have the FakeWeb gem installed when the specs are
2
+ # run they will hit recorded responses. However, if you don't have
3
+ # the FakeWeb gem installed or you set the environment variable
4
+ # LIVE_TEST then the tests will hit the live site gares-en-mouvement.com.
5
+ #
6
+ # Having both methods available for testing allows you to quickly
7
+ # refactor and add features, while also being able to make sure that
8
+ # no changes to the gares-en-mouvement.com interface have affected the parser.
9
+ ###
10
+
11
+ require 'rspec'
12
+
13
+ $LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
14
+ require 'gares'
15
+
16
+ def read_fixture(path)
17
+ File.read(File.expand_path(File.join(File.dirname(__FILE__), 'fixtures', path)))
18
+ end
19
+
20
+ GARES_SAMPLES = {
21
+ 'http://www.gares-en-mouvement.com/fr/frabt/services-en-gare/vente/' => 'frabt',
22
+ 'http://www.gares-en-mouvement.com/fr/frlpd/votre-gare' => 'frlpd',
23
+ 'http://www.gares-en-mouvement.com/fr/frhco/vore-gare/' => 'frhco',
24
+ 'https://www.kimonolabs.com/api/7jys32dy?apikey=lsOO4tNm78cH9JxqWg9gAk9l4nYaou9j&kimmodify=1' => 'search'
25
+ }
26
+
27
+ unless ENV['LIVE_TEST']
28
+ begin
29
+ require 'rubygems'
30
+ require 'fakeweb'
31
+
32
+ FakeWeb.allow_net_connect = false
33
+ GARES_SAMPLES.each do |url, response|
34
+ FakeWeb.register_uri(:get, url, response: read_fixture(response))
35
+ end
36
+ rescue LoadError
37
+ puts 'Could not load FakeWeb, these tests will hit gares-en-mouvement.com'
38
+ puts 'You can run `gem install fakeweb` to stub out the responses.'
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ namespace :fixtures do
2
+ desc "Refresh spec fixtures with fresh data from gares-en-mouvement.com"
3
+ task :refresh do
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec/spec_helper")
5
+
6
+ ONLY = ENV['ONLY'] ? ENV['ONLY'].split(',') : []
7
+ GARES_SAMPLES.each_pair do |url, fixture|
8
+ next if !ONLY.empty? and !ONLY.include?(fixture)
9
+ page = `curl -is #{url}`
10
+
11
+ File.open(File.expand_path(File.dirname(__FILE__) + "/../spec/fixtures/#{fixture}"), 'w') do |f|
12
+ f.write(page)
13
+ end
14
+
15
+ end
16
+ end
17
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
metadata ADDED
@@ -0,0 +1,183 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: gares
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Paul Bonaud
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: hashie
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: unidecoder
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: gokdok
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rdoc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: fakeweb
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: Easily use Ruby or the command line to find information on gares-en-mouvement.com.
126
+ email:
127
+ - paul+gh@bonaud.fr
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - ".rubocop.yml"
135
+ - ".rubocop_todo.yml"
136
+ - ".travis.yml"
137
+ - Gemfile
138
+ - MIT-LICENSE
139
+ - README.md
140
+ - Rakefile
141
+ - gares.gemspec
142
+ - lib/gares.rb
143
+ - lib/gares/base.rb
144
+ - lib/gares/gare.rb
145
+ - lib/gares/gare_list.rb
146
+ - lib/gares/search.rb
147
+ - lib/gares/string_extensions.rb
148
+ - lib/gares/version.rb
149
+ - spec/fixtures/frabt
150
+ - spec/fixtures/frhco
151
+ - spec/fixtures/frlpd
152
+ - spec/fixtures/search
153
+ - spec/gares/gare_spec.rb
154
+ - spec/gares/search_spec.rb
155
+ - spec/spec_helper.rb
156
+ - tasks/fixtures.rake
157
+ - tasks/rspec.rake
158
+ homepage: http://github.com/paulrbr/gares
159
+ licenses:
160
+ - MIT
161
+ metadata: {}
162
+ post_install_message:
163
+ rdoc_options: []
164
+ require_paths:
165
+ - lib
166
+ required_ruby_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ required_rubygems_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - ">="
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ requirements: []
177
+ rubyforge_project: gares
178
+ rubygems_version: 2.2.0
179
+ signing_key:
180
+ specification_version: 4
181
+ summary: Easily access the publicly available information on gares-en-mouvement.com.
182
+ test_files: []
183
+ has_rdoc: