gares 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: