valvat 0.1.0 → 0.1.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.
- data/CHANGES.md +9 -1
- data/README.md +36 -2
- data/lib/valvat/lookup.rb +9 -5
- data/lib/valvat/version.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/valvat/lookup_spec.rb +36 -7
- data/valvat.gemspec +14 -3
- metadata +17 -4
data/CHANGES.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
### dev
|
2
2
|
|
3
|
-
[full changelog](http://github.com/yolk/valvat/compare/v0.1.
|
3
|
+
[full changelog](http://github.com/yolk/valvat/compare/v0.1.1...master)
|
4
|
+
|
5
|
+
### 0.1.1 / 2011-01-07
|
6
|
+
|
7
|
+
[full changelog](http://github.com/yolk/valvat/compare/v0.1.0...v0.1.1)
|
8
|
+
|
9
|
+
* Fixed issue with country web service down and added spec
|
10
|
+
* Stubbed web service specs with fakeweb
|
11
|
+
* Added documentation for ActiveModel support
|
4
12
|
|
5
13
|
### 0.1.0 / 2011-01-07
|
6
14
|
|
data/README.md
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
## valvat
|
2
2
|
|
3
|
-
Validates european vat numbers.
|
3
|
+
Validates european vat numbers. Standalone or as an ActiveModel validator.
|
4
4
|
|
5
|
-
|
5
|
+
### Features
|
6
|
+
|
7
|
+
* Simple syntax verification
|
8
|
+
* Lookup via the VIES web service
|
9
|
+
* Works standalone without any gem dependencies
|
10
|
+
* (Optional) ActiveModel/Rails3 integration
|
11
|
+
* I18n locales for country specific error messages
|
12
|
+
|
13
|
+
valvat is tested and works with ruby 1.8.7/1.9.2 and ActiveModel 3.0.
|
6
14
|
|
7
15
|
### Installation
|
8
16
|
|
@@ -24,6 +32,32 @@ Keep in mind that the VIES webservice might be offline at some time for some cou
|
|
24
32
|
|
25
33
|
See http://ec.europa.eu/taxation_customs/vies/viesspec.do for more accurate information at what time the service for a specific country will be down.
|
26
34
|
|
35
|
+
### ActiveModel/Rails3 Usage
|
36
|
+
|
37
|
+
When the valvat gem is required and ActiveModel is already loaded, everything will work fine out of the box. If your load order differs just add
|
38
|
+
|
39
|
+
require 'valvat/active_model'
|
40
|
+
|
41
|
+
after ActiveModel has been loaded.
|
42
|
+
|
43
|
+
To validate the attribute _vat_number_ add this to your model:
|
44
|
+
|
45
|
+
class MyModel < ActiveRecord::Base
|
46
|
+
validates :vat_number, :valvat => true
|
47
|
+
end
|
48
|
+
|
49
|
+
To additionally perform a lookup via VIES:
|
50
|
+
|
51
|
+
validates :vat_number, :valvat => {:lookup => true}
|
52
|
+
|
53
|
+
By default this will validate to true if the VIES web service is down. To fail in this case simply add the _:fail_if_down_ option:
|
54
|
+
|
55
|
+
validates :vat_number, :valvat => {:lookup => :fail_if_down}
|
56
|
+
|
57
|
+
By default blank vat numbers validate to false, to change this add the _:allow_blank_ option:
|
58
|
+
|
59
|
+
validates :vat_number, :valvat => {:allow_blank => true}
|
60
|
+
|
27
61
|
### Utilities
|
28
62
|
|
29
63
|
To split a vat number into the ISO country code and the remaining chars:
|
data/lib/valvat/lookup.rb
CHANGED
@@ -8,11 +8,15 @@ module Valvat
|
|
8
8
|
parts = Valvat::Utils.split(vat)
|
9
9
|
return false unless parts[0]
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
result = begin
|
12
|
+
YAML.load(Net::HTTP.start("isvat.appspot.com", 80) {|http|
|
13
|
+
http.get("/#{parts.join("/")}/")
|
14
|
+
}.body)
|
15
|
+
rescue
|
16
|
+
nil
|
17
|
+
end
|
18
|
+
|
19
|
+
result.is_a?(Hash) && result["error_code"] == 1 ? nil : result
|
16
20
|
end
|
17
21
|
end
|
18
22
|
end
|
data/lib/valvat/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
data/spec/valvat/lookup_spec.rb
CHANGED
@@ -2,17 +2,46 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Valvat::Lookup do
|
4
4
|
context "#validate" do
|
5
|
-
|
6
|
-
|
5
|
+
context "existing vat number" do
|
6
|
+
before do
|
7
|
+
FakeWeb.register_uri(:get, "http://isvat.appspot.com/BE/0817331995/", :body => "true")
|
8
|
+
end if $fakeweb
|
9
|
+
|
10
|
+
it "returns true" do
|
11
|
+
Valvat::Lookup.validate("BE0817331995").should eql(true)
|
12
|
+
end
|
7
13
|
end
|
8
14
|
|
9
|
-
|
10
|
-
|
15
|
+
context "not existing vat number" do
|
16
|
+
before do
|
17
|
+
FakeWeb.register_uri(:get, "http://isvat.appspot.com/BE/0817331995/", :body => "false")
|
18
|
+
end if $fakeweb
|
19
|
+
|
20
|
+
it "returns false" do
|
21
|
+
Valvat::Lookup.validate("BE0817331995").should eql(false)
|
22
|
+
end
|
11
23
|
end
|
12
24
|
|
13
|
-
|
14
|
-
|
15
|
-
|
25
|
+
context "invalid country code / input" do
|
26
|
+
before do
|
27
|
+
FakeWeb.register_uri(:get, "http://isvat.appspot.com/AE/259597697/", :body => "false")
|
28
|
+
end if $fakeweb
|
29
|
+
|
30
|
+
it "returns false" do
|
31
|
+
Valvat::Lookup.validate("AE259597697").should eql(false)
|
32
|
+
Valvat::Lookup.validate("").should eql(false)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "country web service down" do
|
37
|
+
before do
|
38
|
+
json = "{\"error_message\": \"Member State service unavailable.\", \"error_code\": 1, \"error\": true}"
|
39
|
+
FakeWeb.register_uri(:get, "http://isvat.appspot.com/DE/259597697/", :body => json)
|
40
|
+
end if $fakeweb
|
41
|
+
|
42
|
+
it "returns nil" do
|
43
|
+
Valvat::Lookup.validate("DE259597697").should eql(nil)
|
44
|
+
end
|
16
45
|
end
|
17
46
|
end
|
18
47
|
end
|
data/valvat.gemspec
CHANGED
@@ -9,9 +9,19 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["Sebastian Munz"]
|
10
10
|
s.email = ["sebastian@yo.lk"]
|
11
11
|
s.homepage = "https://github.com/yolk/valvat"
|
12
|
-
s.summary = %q{Validates european vat numbers.
|
13
|
-
s.description =
|
14
|
-
|
12
|
+
s.summary = %q{Validates european vat numbers. Standalone or as an ActiveModel validator.}
|
13
|
+
s.description = <<-END
|
14
|
+
Validates european vat numbers. Standalone or as an ActiveModel validator.
|
15
|
+
|
16
|
+
* Simple syntax verification
|
17
|
+
* Lookup via the VIES web service
|
18
|
+
* Works standalone without any gem dependencies
|
19
|
+
* (Optional) ActiveModel/Rails3 integration
|
20
|
+
* I18n locales for country specific error messages
|
21
|
+
END
|
22
|
+
|
23
|
+
|
24
|
+
|
15
25
|
s.files = `git ls-files`.split("\n")
|
16
26
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
27
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
@@ -22,4 +32,5 @@ Gem::Specification.new do |s|
|
|
22
32
|
s.add_development_dependency 'growl', '>=1.0.3'
|
23
33
|
s.add_development_dependency 'rb-fsevent', '>=0.3.9'
|
24
34
|
s.add_development_dependency 'activemodel', '>=3.0'
|
35
|
+
s.add_development_dependency 'fakeweb'
|
25
36
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Sebastian Munz
|
@@ -91,7 +91,20 @@ dependencies:
|
|
91
91
|
version: "3.0"
|
92
92
|
type: :development
|
93
93
|
version_requirements: *id005
|
94
|
-
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: fakeweb
|
96
|
+
prerelease: false
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
segments:
|
103
|
+
- 0
|
104
|
+
version: "0"
|
105
|
+
type: :development
|
106
|
+
version_requirements: *id006
|
107
|
+
description: " Validates european vat numbers. Standalone or as an ActiveModel validator.\n \n * Simple syntax verification\n * Lookup via the VIES web service\n * Works standalone without any gem dependencies\n * (Optional) ActiveModel/Rails3 integration\n * I18n locales for country specific error messages\n"
|
95
108
|
email:
|
96
109
|
- sebastian@yo.lk
|
97
110
|
executables: []
|
@@ -155,7 +168,7 @@ rubyforge_project:
|
|
155
168
|
rubygems_version: 1.3.7
|
156
169
|
signing_key:
|
157
170
|
specification_version: 3
|
158
|
-
summary: Validates european vat numbers.
|
171
|
+
summary: Validates european vat numbers. Standalone or as an ActiveModel validator.
|
159
172
|
test_files:
|
160
173
|
- spec/spec_helper.rb
|
161
174
|
- spec/valvat/active_model_spec.rb
|