vin_exploder 0.4.1 → 0.4.2
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.
- data/Gemfile.lock +1 -1
- data/lib/vin_exploder/cache.rb +1 -1
- data/lib/vin_exploder/test_adapter.rb +46 -0
- data/lib/vin_exploder/version.rb +1 -1
- data/spec/test_adapter_spec.rb +51 -0
- data/spec/vin_exploder_spec.rb +1 -6
- metadata +5 -2
data/Gemfile.lock
CHANGED
data/lib/vin_exploder/cache.rb
CHANGED
@@ -37,7 +37,7 @@ module VinExploder
|
|
37
37
|
if block_given?
|
38
38
|
if hash.nil?
|
39
39
|
hash = yield
|
40
|
-
|
40
|
+
write(vin, hash) unless hash.empty? || (hash[:errors] && !hash[:errors].empty?)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
hash
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'vin_exploder/abstract_adapter'
|
2
|
+
|
3
|
+
module VinExploder
|
4
|
+
|
5
|
+
module Decode
|
6
|
+
|
7
|
+
class TestAdapter < AbstractAdapter
|
8
|
+
|
9
|
+
# Create new vinquery adapter
|
10
|
+
#
|
11
|
+
# == Parameters
|
12
|
+
# options:: access_code, report_type, url
|
13
|
+
def initialize(options={})
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def explode(vin)
|
18
|
+
fetch(vin)
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
def fetch(vin)
|
23
|
+
#could make the hashes more complete
|
24
|
+
case vin
|
25
|
+
when '3D7LU38C83G854645'
|
26
|
+
{ :make => 'Dodge', :model => 'Ram 3500', :year => '2004', :trim_level => 'ST Quad Cab Long Bed 4WD', :fuel_type => 'Desiel', :engine_type => '5.9L L6 OHV 24V TURBO DIESEL', :number_of_doors => '4', :manufactured_in => 'UNITED STATES', :production_seq_number => 'C27031', :driveline => '4WD', :body_style => "CREW CAB PICKUP 4-DR" }
|
27
|
+
when '1G1ND52F14M587843'
|
28
|
+
{ :make => 'Chevrolet', :model => 'Classic', :year => '2004', :trim_level => 'Fleet', :fuel_type => 'Gas', :engine_type => '2.2L L4 DOHC', :number_of_doors => '4', :manufactured_in => 'UNITED STATES', :production_seq_number => '587843', :driveline => 'FWD', :body_style => "SEDAN 4-DR" }
|
29
|
+
when '12345678912345678'
|
30
|
+
{ :errors => [{'5' => 'Invalid VIN number: This VIN number did not pass checksum test.'}] }
|
31
|
+
when /[IOQ]/
|
32
|
+
{ :errors => [{'3' => "Invalid VIN number: This VIN number contains invalid letters: I,O or Q."}] }
|
33
|
+
else
|
34
|
+
{ :errors => [{'0' => "VIN not found"}] }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def normalize(vq_hash)
|
39
|
+
vq_hash
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/lib/vin_exploder/version.rb
CHANGED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'vin_exploder/test_adapter'
|
3
|
+
|
4
|
+
module VinExploder
|
5
|
+
module Decode
|
6
|
+
|
7
|
+
describe TestAdapter do
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
@adapter = TestAdapter.new({})
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return Dodge Ram for vin 3D7LU38C83G854645" do
|
14
|
+
hash = @adapter.explode '3D7LU38C83G854645'
|
15
|
+
hash[:make].should == 'Dodge'
|
16
|
+
hash[:model].should == 'Ram 3500'
|
17
|
+
hash[:fuel_type].should == 'Desiel'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return Chevrolet Classic for vin 1G1ND52F14M587843" do
|
21
|
+
hash = @adapter.explode '1G1ND52F14M587843'
|
22
|
+
hash[:make].should == 'Chevrolet'
|
23
|
+
hash[:model].should == 'Classic'
|
24
|
+
hash[:fuel_type].should == 'Gas'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should return checksum error for vin 12345678912345678" do
|
28
|
+
hash = @adapter.explode '12345678912345678'
|
29
|
+
hash[:errors].first.values.first.should == 'Invalid VIN number: This VIN number did not pass checksum test.'
|
30
|
+
hash[:make].should be_nil
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return invalid letters error for vins with I, O or Q" do
|
34
|
+
hash = @adapter.explode 'I2345678912345678'
|
35
|
+
hash[:errors].first.values.first.should == 'Invalid VIN number: This VIN number contains invalid letters: I,O or Q.'
|
36
|
+
hash[:make].should be_nil
|
37
|
+
hash = @adapter.explode 'O2345678912345678'
|
38
|
+
hash[:errors].first.values.first.should == 'Invalid VIN number: This VIN number contains invalid letters: I,O or Q.'
|
39
|
+
hash = @adapter.explode 'Q2345678912345678'
|
40
|
+
hash[:errors].first.values.first.should == 'Invalid VIN number: This VIN number contains invalid letters: I,O or Q.'
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should return 'VIN not found' error for all other vins" do
|
44
|
+
hash = @adapter.explode '1J1ND33F14M537843'
|
45
|
+
hash[:errors].first.values.first.should == 'VIN not found'
|
46
|
+
hash[:make].should be_nil
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
data/spec/vin_exploder_spec.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'vin_exploder'
|
3
|
-
|
4
|
-
class VinExploder::Decode::TestAdapter; end
|
3
|
+
require 'vin_exploder/test_adapter'
|
5
4
|
|
6
5
|
module VinExploder
|
7
6
|
|
@@ -37,10 +36,6 @@ describe Exploder do
|
|
37
36
|
|
38
37
|
describe "VinExploder#explode" do
|
39
38
|
it "should return an Explosion object" do
|
40
|
-
ta = VinExploder::Decode::TestAdapter.new
|
41
|
-
ta.should_receive(:explode) { {} }
|
42
|
-
VinExploder::Decode::TestAdapter.should_receive(:new){ ta }
|
43
|
-
|
44
39
|
VinExploder.config.adapter :test_adapter
|
45
40
|
VinExploder.explode("VIN").class.should == Explosion
|
46
41
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: vin_exploder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.4.
|
5
|
+
version: 0.4.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jake Mallory
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-18 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- lib/vin_exploder/configuration.rb
|
98
98
|
- lib/vin_exploder/exploder.rb
|
99
99
|
- lib/vin_exploder/explosion.rb
|
100
|
+
- lib/vin_exploder/test_adapter.rb
|
100
101
|
- lib/vin_exploder/version.rb
|
101
102
|
- lib/vin_exploder.rb
|
102
103
|
- Gemfile
|
@@ -109,6 +110,7 @@ files:
|
|
109
110
|
- spec/cache/sequel_cache_store_spec.rb
|
110
111
|
- spec/configuration_spec.rb
|
111
112
|
- spec/spec_helper.rb
|
113
|
+
- spec/test_adapter_spec.rb
|
112
114
|
- spec/vin_exploder_spec.rb
|
113
115
|
homepage: http://github.com/tinomen/vin_exploder
|
114
116
|
licenses: []
|
@@ -150,4 +152,5 @@ test_files:
|
|
150
152
|
- spec/cache/sequel_cache_store_spec.rb
|
151
153
|
- spec/configuration_spec.rb
|
152
154
|
- spec/spec_helper.rb
|
155
|
+
- spec/test_adapter_spec.rb
|
153
156
|
- spec/vin_exploder_spec.rb
|