moto_recall 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +68 -0
  7. data/Rakefile +46 -0
  8. data/data/class_map.yml +41 -0
  9. data/data/sample_queries.yml +17 -0
  10. data/lib/moto_recall.rb +38 -0
  11. data/lib/moto_recall/class_map.rb +24 -0
  12. data/lib/moto_recall/client/acura.rb +32 -0
  13. data/lib/moto_recall/client/audi.rb +29 -0
  14. data/lib/moto_recall/client/bmw.rb +29 -0
  15. data/lib/moto_recall/client/chrysler.rb +51 -0
  16. data/lib/moto_recall/client/ford.rb +49 -0
  17. data/lib/moto_recall/client/general_motors.rb +40 -0
  18. data/lib/moto_recall/client/generic_client.rb +44 -0
  19. data/lib/moto_recall/client/honda.rb +32 -0
  20. data/lib/moto_recall/client/hyundai.rb +46 -0
  21. data/lib/moto_recall/client/infiniti.rb +29 -0
  22. data/lib/moto_recall/client/isuzu.rb +52 -0
  23. data/lib/moto_recall/client/jaguar.rb +29 -0
  24. data/lib/moto_recall/client/kia.rb +30 -0
  25. data/lib/moto_recall/client/mazda.rb +26 -0
  26. data/lib/moto_recall/client/mitsubishi.rb +46 -0
  27. data/lib/moto_recall/client/nissan.rb +29 -0
  28. data/lib/moto_recall/client/subaru.rb +29 -0
  29. data/lib/moto_recall/client/volkswagen.rb +29 -0
  30. data/lib/moto_recall/client/volvo.rb +78 -0
  31. data/lib/moto_recall/recall.rb +40 -0
  32. data/lib/moto_recall/recall_set.rb +22 -0
  33. data/lib/moto_recall/sampler.rb +18 -0
  34. data/lib/moto_recall/sampler/runner.rb +22 -0
  35. data/lib/moto_recall/sampler/sample.rb +30 -0
  36. data/lib/moto_recall/sampler/util.rb +40 -0
  37. data/lib/moto_recall/version.rb +3 -0
  38. data/moto_recall.gemspec +31 -0
  39. data/samples-example.csv +191 -0
  40. data/spec/moto_recall/class_map_spec.rb +24 -0
  41. data/spec/moto_recall/recall_set_spec.rb +27 -0
  42. data/spec/moto_recall/recall_spec.rb +24 -0
  43. data/spec/moto_recall_spec.rb +28 -0
  44. data/spec/spec_helper.rb +20 -0
  45. metadata +230 -0
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe MotoRecall::ClassMap do
4
+ let(:class_map) { MotoRecall::ClassMap }
5
+
6
+ describe ".class_for_make" do
7
+ it { expect(class_map.class_for_make(:audi)).to be(MotoRecall::Client::Audi) }
8
+ it { expect(class_map.class_for_make(:bmw)).to be(MotoRecall::Client::Bmw) }
9
+ it { expect(class_map.class_for_make(:buick)).to be(MotoRecall::Client::GeneralMotors) }
10
+ it { expect(class_map.class_for_make(:chevrolet)).to be(MotoRecall::Client::GeneralMotors) }
11
+ it { expect(class_map.class_for_make(:gmc_truck)).to be(MotoRecall::Client::GeneralMotors) }
12
+ it { expect(class_map.class_for_make(:pontiac)).to be(MotoRecall::Client::GeneralMotors) }
13
+ it { expect(class_map.class_for_make(:saab)).to be(MotoRecall::Client::GeneralMotors) }
14
+ it { expect(class_map.class_for_make(:ford)).to be(MotoRecall::Client::Ford) }
15
+ it { expect(class_map.class_for_make(:honda)).to be(MotoRecall::Client::Honda) }
16
+ it { expect(class_map.class_for_make(:chrysler)).to be(MotoRecall::Client::Chrysler) }
17
+ it { expect(class_map.class_for_make(:jeep)).to be(MotoRecall::Client::Chrysler) }
18
+ it { expect(class_map.class_for_make(:kia)).to be(MotoRecall::Client::Kia) }
19
+ it { expect(class_map.class_for_make(:infiniti)).to be(MotoRecall::Client::Infiniti) }
20
+ it { expect(class_map.class_for_make(:volkswagen)).to be(MotoRecall::Client::Volkswagen) }
21
+ it { expect(class_map.class_for_make(:subaru)).to be(MotoRecall::Client::Subaru) }
22
+ it { expect(class_map.class_for_make(:volvo)).to be(MotoRecall::Client::Volvo) }
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ require "spec_helper"
2
+
3
+ describe MotoRecall::RecallSet do
4
+ it "is enumerable" do
5
+ recalls = MotoRecall::RecallSet.new([1, 2, 3, 4])
6
+
7
+ expect(recalls.respond_to?(:map)).to be true
8
+ expect(recalls.respond_to?(:find)).to be true
9
+ expect(recalls.respond_to?(:select)).to be true
10
+ expect(recalls.respond_to?(:reduce)).to be true
11
+ end
12
+
13
+ it "allows recalls to be accessed directly through #items" do
14
+ items = [1, 2, 3, 4]
15
+ recalls = MotoRecall::RecallSet.new(items)
16
+ expect(recalls.items).to eql(items)
17
+ end
18
+
19
+ it "contains the original response from the remote resource" do
20
+ original_response = "The original http response from the remote resource"
21
+ recalls = MotoRecall::RecallSet.new([1, 2, 3, 4], {
22
+ original_response: original_response
23
+ })
24
+
25
+ expect(recalls.original_response).to eql(original_response)
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ require "spec_helper"
2
+
3
+ describe MotoRecall::Recall do
4
+ it "assigns attributes based on input hash" do
5
+ data = {
6
+ type: "1234",
7
+ nhtsa_number: "4843962",
8
+ oem_number: "38971",
9
+ date: "2015-02-24",
10
+ title: "Foo Bar Baz",
11
+ description: "Womp womp",
12
+ safety_risk: "Stay safe out there",
13
+ remedy: "Get well soon",
14
+ status: "Woohoo",
15
+ notes: "I have so much to say"
16
+ }
17
+
18
+ recall = MotoRecall::Recall.new(data)
19
+
20
+ data.each do |k, v|
21
+ expect(recall.send(k)).to eql(v)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+
3
+ describe MotoRecall do
4
+ describe "#find" do
5
+ it "raises exception on invalid VIN" do
6
+ expect do
7
+ MotoRecall.find(:honda, "invalid")
8
+ end.to raise_error(ArgumentError)
9
+ end
10
+
11
+ it "raises exception on invalid make" do
12
+ expect do
13
+ MotoRecall.find(:foobar, "5FNYF18218B043384")
14
+ end.to raise_error(ArgumentError)
15
+ end
16
+
17
+ it "raises ClientException on certain rescuable exceptions" do
18
+ # force Timeout::Error exception to ensure it is rescued
19
+ allow_any_instance_of(MotoRecall::Client::GenericClient).to receive(:find) do
20
+ raise Timeout::Error
21
+ end
22
+
23
+ expect do
24
+ MotoRecall.find(:honda, "5FNYF18218B043384")
25
+ end.to raise_error(MotoRecall::ClientException)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ require "pry-byebug"
2
+ require "moto_recall"
3
+
4
+ # This file was generated by the `rspec --init` command. Conventionally, all
5
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
6
+ # Require this file using `require "spec_helper"` to ensure that it is only
7
+ # loaded once.
8
+ #
9
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
10
+ RSpec.configure do |config|
11
+ config.run_all_when_everything_filtered = true
12
+ config.filter_run :focus
13
+
14
+ # Run specs in random order to surface order dependencies. If you find an
15
+ # order dependency and want to debug it, you can fix the order by providing
16
+ # the seed, which is printed after each run.
17
+ # --seed 1234
18
+ config.order = 'random'
19
+ end
20
+
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: moto_recall
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.21
5
+ platform: ruby
6
+ authors:
7
+ - Jordan Stephens
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
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: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: colorize
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.7.7
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.7.7
83
+ - !ruby/object:Gem::Dependency
84
+ name: gimme_vins
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.2
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.2
97
+ - !ruby/object:Gem::Dependency
98
+ name: activesupport
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '4.1'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 4.1.0
107
+ type: :runtime
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '4.1'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 4.1.0
117
+ - !ruby/object:Gem::Dependency
118
+ name: mechanize
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '2.7'
124
+ type: :runtime
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '2.7'
131
+ - !ruby/object:Gem::Dependency
132
+ name: nokogiri
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.6'
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: 1.6.3
141
+ type: :runtime
142
+ prerelease: false
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '1.6'
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 1.6.3
151
+ description: Find vehicle recall info by manufacturer and VIN
152
+ email:
153
+ - jordan@moto-research.com
154
+ executables: []
155
+ extensions: []
156
+ extra_rdoc_files: []
157
+ files:
158
+ - ".gitignore"
159
+ - ".rspec"
160
+ - Gemfile
161
+ - LICENSE.txt
162
+ - README.md
163
+ - Rakefile
164
+ - data/class_map.yml
165
+ - data/sample_queries.yml
166
+ - lib/moto_recall.rb
167
+ - lib/moto_recall/class_map.rb
168
+ - lib/moto_recall/client/acura.rb
169
+ - lib/moto_recall/client/audi.rb
170
+ - lib/moto_recall/client/bmw.rb
171
+ - lib/moto_recall/client/chrysler.rb
172
+ - lib/moto_recall/client/ford.rb
173
+ - lib/moto_recall/client/general_motors.rb
174
+ - lib/moto_recall/client/generic_client.rb
175
+ - lib/moto_recall/client/honda.rb
176
+ - lib/moto_recall/client/hyundai.rb
177
+ - lib/moto_recall/client/infiniti.rb
178
+ - lib/moto_recall/client/isuzu.rb
179
+ - lib/moto_recall/client/jaguar.rb
180
+ - lib/moto_recall/client/kia.rb
181
+ - lib/moto_recall/client/mazda.rb
182
+ - lib/moto_recall/client/mitsubishi.rb
183
+ - lib/moto_recall/client/nissan.rb
184
+ - lib/moto_recall/client/subaru.rb
185
+ - lib/moto_recall/client/volkswagen.rb
186
+ - lib/moto_recall/client/volvo.rb
187
+ - lib/moto_recall/recall.rb
188
+ - lib/moto_recall/recall_set.rb
189
+ - lib/moto_recall/sampler.rb
190
+ - lib/moto_recall/sampler/runner.rb
191
+ - lib/moto_recall/sampler/sample.rb
192
+ - lib/moto_recall/sampler/util.rb
193
+ - lib/moto_recall/version.rb
194
+ - moto_recall.gemspec
195
+ - samples-example.csv
196
+ - spec/moto_recall/class_map_spec.rb
197
+ - spec/moto_recall/recall_set_spec.rb
198
+ - spec/moto_recall/recall_spec.rb
199
+ - spec/moto_recall_spec.rb
200
+ - spec/spec_helper.rb
201
+ homepage: https://github.com/motologic/moto_recall
202
+ licenses:
203
+ - MIT
204
+ metadata: {}
205
+ post_install_message:
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ requirements: []
220
+ rubyforge_project:
221
+ rubygems_version: 2.4.5
222
+ signing_key:
223
+ specification_version: 4
224
+ summary: Find vehicle recall info by manufacturer and VIN
225
+ test_files:
226
+ - spec/moto_recall/class_map_spec.rb
227
+ - spec/moto_recall/recall_set_spec.rb
228
+ - spec/moto_recall/recall_spec.rb
229
+ - spec/moto_recall_spec.rb
230
+ - spec/spec_helper.rb