valvat 1.1.0 → 1.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.github/workflows/ruby.yml +1 -1
- data/CHANGES.md +7 -1
- data/README.md +1 -1
- data/lib/valvat/checksum.rb +13 -18
- data/lib/valvat/checksum/it.rb +1 -1
- data/lib/valvat/version.rb +1 -1
- data/spec/valvat/checksum/it_spec.rb +1 -1
- data/spec/valvat/checksum_spec.rb +13 -0
- data/spec/valvat/syntax_spec.rb +1 -1
- metadata +2 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a46ea169067e8ad3077440f355850677b7da8d8a2ce4cf64f66f6ab00f53094d
|
4
|
+
data.tar.gz: e3e3155fc732de64002519b5b542f4f9d663f0d8fa868c4233aa03ad90e1cb65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ddb01f926a6d1c6e05e653aff20e81eaaa9249e70ea63fbd6a06f0519863ae410e6873a1948947c90bf4ad64787478a0f8c3ff74ffb0f16fe08705a1e5d5c3b
|
7
|
+
data.tar.gz: 9a1dd08067a21ce1f0b1663a4cdc8e92cc91a2edc9bf959c294674f5a97dc1bd87375ca27c0f88330bedaf628886cc2cfc27ae3ec71c74e2077068d3db7e1052
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/.github/workflows/ruby.yml
CHANGED
@@ -17,7 +17,7 @@ jobs:
|
|
17
17
|
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}
|
18
18
|
strategy:
|
19
19
|
matrix:
|
20
|
-
ruby-version: ['2.5', '2.6', '2.7', '3.0', 'jruby-head']
|
20
|
+
ruby-version: ['2.5', '2.6', '2.7', '3.0', 'jruby-head', 'truffleruby-head']
|
21
21
|
gemfile: [ 'standalone', 'activemodel-5', 'activemodel-6' ]
|
22
22
|
exclude:
|
23
23
|
- ruby-version: '3.0'
|
data/CHANGES.md
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
|
2
2
|
### dev
|
3
3
|
|
4
|
-
[full changelog](http://github.com/yolk/valvat/compare/v1.1.
|
4
|
+
[full changelog](http://github.com/yolk/valvat/compare/v1.1.1...master)
|
5
|
+
|
6
|
+
### 1.1.0 / 2021-07-15
|
7
|
+
|
8
|
+
[full changelog](http://github.com/yolk/valvat/compare/v1.1.0...v1.1.1)
|
9
|
+
|
10
|
+
* Added support for italian VAT numbers with special province part (#104)
|
5
11
|
|
6
12
|
### 1.1.0 / 2021-01-15
|
7
13
|
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ Northern Ireland received its own VAT number prefix - XI which is supported by V
|
|
20
20
|
* I18n locales for language specific error messages in English, German, French, Spanish, Italian, Portuguese, Polish, Swedish, Dutch, Danish, Czech, Slovakian, Hungarian, Bulgarian, Romanian, Latvian, Catalan, Norwegian, and Finnish.
|
21
21
|
* *Experimental* checksum verification
|
22
22
|
|
23
|
-
valvat is tested and works with ruby MRI 2.5/2.6/2.7/3.0, jruby-head and ActiveModel 5/6. If you need support for ruby down to 1.9.3 and ActiveModel 3 and 4 use [v1.0.1](https://github.com/yolk/valvat/tree/v1.0.1).
|
23
|
+
valvat is tested and works with ruby MRI 2.5/2.6/2.7/3.0, jruby-head, truffleruby-head and ActiveModel 5/6. If you need support for ruby down to 1.9.3 and ActiveModel 3 and 4 use [v1.0.1](https://github.com/yolk/valvat/tree/v1.0.1).
|
24
24
|
|
25
25
|
## Installation
|
26
26
|
|
data/lib/valvat/checksum.rb
CHANGED
@@ -2,20 +2,7 @@
|
|
2
2
|
|
3
3
|
class Valvat
|
4
4
|
module Checksum
|
5
|
-
ALGORITHMS = {} # rubocop:disable Style/MutableConstant
|
6
|
-
|
7
|
-
def self.validate(vat)
|
8
|
-
vat = Valvat(vat)
|
9
|
-
algo = ALGORITHMS[vat.iso_country_code]
|
10
|
-
Valvat::Syntax.validate(vat) && !!(algo.nil? || algo.new(vat).validate)
|
11
|
-
end
|
12
|
-
|
13
5
|
class Base
|
14
|
-
def self.inherited(klass)
|
15
|
-
ALGORITHMS[klass.name.split(/::/).last] = klass
|
16
|
-
super
|
17
|
-
end
|
18
|
-
|
19
6
|
attr_reader :vat
|
20
7
|
|
21
8
|
def self.check_digit_length(len = nil)
|
@@ -74,10 +61,18 @@ class Valvat
|
|
74
61
|
end.modulo(11)
|
75
62
|
end
|
76
63
|
end
|
77
|
-
end
|
78
|
-
end
|
79
64
|
|
80
|
-
|
81
|
-
|
82
|
-
|
65
|
+
def self.validate(vat)
|
66
|
+
vat = Valvat(vat)
|
67
|
+
algo = ALGORITHMS[vat.iso_country_code]
|
68
|
+
Valvat::Syntax.validate(vat) && !!(algo.nil? || algo.new(vat).validate)
|
69
|
+
end
|
70
|
+
|
71
|
+
ALGORITHMS = Dir[File.join(__dir__, 'checksum', '*.rb')].each_with_object({}) do |path, algos|
|
72
|
+
require path.gsub(/\.rb$/, '')
|
73
|
+
|
74
|
+
classname = File.basename(path, '.rb').upcase
|
75
|
+
algos[classname] = ['Valvat', 'Checksum', classname].inject(Object, :const_get)
|
76
|
+
end.freeze
|
77
|
+
end
|
83
78
|
end
|
data/lib/valvat/checksum/it.rb
CHANGED
data/lib/valvat/version.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Valvat::Checksum::IT do
|
6
|
-
%w[IT12345670785 IT01897810162 IT00197200132 IT02762750210].each do |valid_vat|
|
6
|
+
%w[IT12345670785 IT01897810162 IT00197200132 IT02762750210 IT00146089990].each do |valid_vat|
|
7
7
|
it "returns true on valid VAT #{valid_vat}" do
|
8
8
|
expect(Valvat::Checksum.validate(valid_vat)).to be(true)
|
9
9
|
end
|
@@ -8,6 +8,13 @@ rescue LoadError
|
|
8
8
|
VALID_VAT_NUMBERS = [].freeze
|
9
9
|
end
|
10
10
|
|
11
|
+
# Syntax is correct, but checksum invalid
|
12
|
+
INVALID_VAT_NUMBERS = %w[
|
13
|
+
DE002768611 DE161216774 DE192970834 DE223361232 DE226095231
|
14
|
+
DE227411313 DE230928917 DE232123248 DE267748405 DE275615509
|
15
|
+
DE311927825 DE329214395 DE815842425 DE821530465 DE999999999
|
16
|
+
].freeze
|
17
|
+
|
11
18
|
describe Valvat::Checksum do
|
12
19
|
describe '#validate' do
|
13
20
|
it 'returns true on VAT number with unknown checksum algorithm' do
|
@@ -23,5 +30,11 @@ describe Valvat::Checksum do
|
|
23
30
|
expect(described_class.validate(valid_vat)).to be(true)
|
24
31
|
end
|
25
32
|
end
|
33
|
+
|
34
|
+
INVALID_VAT_NUMBERS.each do |invalid_vat|
|
35
|
+
it "returns false on invalid VAT number #{invalid_vat}" do
|
36
|
+
expect(described_class.validate(invalid_vat)).to be(false)
|
37
|
+
end
|
38
|
+
end
|
26
39
|
end
|
27
40
|
end
|
data/spec/valvat/syntax_spec.rb
CHANGED
@@ -36,7 +36,7 @@ describe Valvat::Syntax do
|
|
36
36
|
it_validates(%w[HR12345678912], %w[HR6789459 HR67894595L HR6789459J])
|
37
37
|
it_validates(%w[HU67894595], %w[HU6789459 HU67894595L HU6789459J])
|
38
38
|
it_validates(%w[IE1B12345J IE1234567B IE1234567XX], %w[IE1B123459 IE19123450 IEA9123450 IE1B12345XX IE1X34567XX])
|
39
|
-
it_validates(%w[IT45875359285], %w[IT458753592859 IT4587535928G IT4587535928])
|
39
|
+
it_validates(%w[IT45875359285 IT00146089990], %w[IT458753592859 IT4587535928G IT4587535928])
|
40
40
|
it_validates(%w[LT213179412 LT290061371314],
|
41
41
|
%w[LT21317942 LT213179422 LT2131794120 LT213179412K LT29006137132 LT290061371324 LT29006137131C
|
42
42
|
LT290061371314H])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valvat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Munz
|
@@ -34,7 +34,7 @@ cert_chain:
|
|
34
34
|
KzzULF0bF9oNpXwBEamlH2myNb19u1W8ijobQ7Y19ca8UFHr5LI32ZW5Zlmep8je
|
35
35
|
vb+o07oLRx3t2T/EO4DZ1w==
|
36
36
|
-----END CERTIFICATE-----
|
37
|
-
date: 2021-
|
37
|
+
date: 2021-07-15 00:00:00.000000000 Z
|
38
38
|
dependencies:
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: savon
|
metadata.gz.sig
CHANGED
Binary file
|