valvat 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/.github/workflows/ruby.yml +35 -0
  5. data/.gitignore +1 -0
  6. data/.rubocop.yml +15 -0
  7. data/CHANGES.md +9 -1
  8. data/Gemfile +2 -0
  9. data/Guardfile +6 -4
  10. data/README.md +5 -3
  11. data/Rakefile +3 -1
  12. data/gemfiles/activemodel-5 +1 -1
  13. data/gemfiles/activemodel-6 +1 -1
  14. data/lib/active_model/validations/valvat_validator.rb +65 -32
  15. data/lib/valvat.rb +4 -2
  16. data/lib/valvat/checksum.rb +14 -13
  17. data/lib/valvat/checksum/at.rb +3 -1
  18. data/lib/valvat/checksum/be.rb +3 -1
  19. data/lib/valvat/checksum/bg.rb +17 -17
  20. data/lib/valvat/checksum/cy.rb +2 -0
  21. data/lib/valvat/checksum/de.rb +5 -3
  22. data/lib/valvat/checksum/dk.rb +3 -1
  23. data/lib/valvat/checksum/ee.rb +2 -0
  24. data/lib/valvat/checksum/es.rb +14 -16
  25. data/lib/valvat/checksum/fi.rb +3 -1
  26. data/lib/valvat/checksum/fr.rb +4 -2
  27. data/lib/valvat/checksum/gb.rb +46 -31
  28. data/lib/valvat/checksum/gr.rb +4 -2
  29. data/lib/valvat/checksum/hr.rb +2 -0
  30. data/lib/valvat/checksum/hu.rb +2 -0
  31. data/lib/valvat/checksum/ie.rb +5 -6
  32. data/lib/valvat/checksum/it.rb +6 -4
  33. data/lib/valvat/checksum/lt.rb +2 -0
  34. data/lib/valvat/checksum/lu.rb +3 -1
  35. data/lib/valvat/checksum/mt.rb +2 -0
  36. data/lib/valvat/checksum/nl.rb +5 -3
  37. data/lib/valvat/checksum/pl.rb +3 -1
  38. data/lib/valvat/checksum/pt.rb +3 -1
  39. data/lib/valvat/checksum/ro.rb +2 -0
  40. data/lib/valvat/checksum/se.rb +5 -3
  41. data/lib/valvat/checksum/si.rb +4 -2
  42. data/lib/valvat/error.rb +4 -1
  43. data/lib/valvat/local.rb +6 -4
  44. data/lib/valvat/locales/de.yml +2 -1
  45. data/lib/valvat/locales/en.yml +2 -1
  46. data/lib/valvat/locales/es.yml +1 -0
  47. data/lib/valvat/locales/fr.yml +1 -0
  48. data/lib/valvat/locales/hu.yml +1 -0
  49. data/lib/valvat/locales/nl.yml +1 -0
  50. data/lib/valvat/locales/pl.yml +1 -0
  51. data/lib/valvat/lookup.rb +5 -4
  52. data/lib/valvat/lookup/fault.rb +17 -16
  53. data/lib/valvat/lookup/request.rb +21 -16
  54. data/lib/valvat/lookup/response.rb +11 -10
  55. data/lib/valvat/syntax.rb +31 -30
  56. data/lib/valvat/utils.rb +12 -9
  57. data/lib/valvat/version.rb +3 -1
  58. data/spec/active_model/validations/valvat_validator_spec.rb +99 -93
  59. data/spec/spec_helper.rb +8 -8
  60. data/spec/valvat/checksum/at_spec.rb +6 -4
  61. data/spec/valvat/checksum/be_spec.rb +6 -4
  62. data/spec/valvat/checksum/bg_spec.rb +7 -4
  63. data/spec/valvat/checksum/cy_spec.rb +3 -1
  64. data/spec/valvat/checksum/de_spec.rb +6 -4
  65. data/spec/valvat/checksum/dk_spec.rb +6 -4
  66. data/spec/valvat/checksum/ee_spec.rb +3 -1
  67. data/spec/valvat/checksum/es_spec.rb +7 -4
  68. data/spec/valvat/checksum/fi_spec.rb +6 -4
  69. data/spec/valvat/checksum/fr_spec.rb +6 -4
  70. data/spec/valvat/checksum/gb_spec.rb +4 -2
  71. data/spec/valvat/checksum/gr_spec.rb +6 -4
  72. data/spec/valvat/checksum/hr_spec.rb +3 -1
  73. data/spec/valvat/checksum/hu_spec.rb +3 -1
  74. data/spec/valvat/checksum/ie_spec.rb +8 -6
  75. data/spec/valvat/checksum/it_spec.rb +10 -8
  76. data/spec/valvat/checksum/lt_spec.rb +3 -1
  77. data/spec/valvat/checksum/lu_spec.rb +6 -4
  78. data/spec/valvat/checksum/mt_spec.rb +3 -1
  79. data/spec/valvat/checksum/nl_spec.rb +9 -7
  80. data/spec/valvat/checksum/pl_spec.rb +8 -6
  81. data/spec/valvat/checksum/pt_spec.rb +10 -11
  82. data/spec/valvat/checksum/ro_spec.rb +3 -1
  83. data/spec/valvat/checksum/se_spec.rb +8 -6
  84. data/spec/valvat/checksum/si_spec.rb +10 -8
  85. data/spec/valvat/checksum_spec.rb +11 -9
  86. data/spec/valvat/lookup/fault_spec.rb +34 -0
  87. data/spec/valvat/lookup/request_spec.rb +19 -0
  88. data/spec/valvat/lookup/response_spec.rb +29 -0
  89. data/spec/valvat/lookup_spec.rb +138 -153
  90. data/spec/valvat/syntax_spec.rb +59 -280
  91. data/spec/valvat/utils_spec.rb +62 -47
  92. data/spec/valvat_spec.rb +140 -152
  93. data/valvat.gemspec +17 -17
  94. metadata +24 -27
  95. metadata.gz.sig +0 -0
  96. data/.travis.yml +0 -47
  97. data/gemfiles/activemodel-3-2 +0 -7
  98. data/gemfiles/activemodel-4 +0 -7
  99. data/gemfiles/before-ruby21/activemodel-3-2 +0 -8
  100. data/gemfiles/before-ruby21/activemodel-4 +0 -8
  101. data/gemfiles/before-ruby21/standalone +0 -7
  102. data/spec/valvat/lockup/fault_spec.rb +0 -32
  103. data/spec/valvat/lockup/request_spec.rb +0 -15
  104. data/spec/valvat/lockup/response_spec.rb +0 -27
@@ -1,31 +1,30 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Valvat::Checksum::PT do
4
-
5
- subject { Valvat::Checksum }
6
-
7
- %w(PT136695973 PT501413197 PT503037753 PT500243590 PT500100144 PT502921838).each do |valid_vat|
6
+ %w[PT136695973 PT501413197 PT503037753 PT500243590 PT500100144 PT502921838].each do |valid_vat|
8
7
  it "returns true on valid VAT #{valid_vat}" do
9
- expect(subject.validate(valid_vat)).to eql(true)
8
+ expect(Valvat::Checksum.validate(valid_vat)).to be(true)
10
9
  end
11
10
 
12
11
  invalid_vat = "#{valid_vat[0..-5]}#{valid_vat[-1]}#{valid_vat[-4]}#{valid_vat[-2]}#{valid_vat[-3]}"
13
12
 
14
13
  it "returns false on invalid VAT #{invalid_vat}" do
15
- expect(subject.validate(invalid_vat)).to eql(false)
14
+ expect(Valvat::Checksum.validate(invalid_vat)).to be(false)
16
15
  end
17
16
  end
18
17
 
19
18
  # Portuguese business VAT should start with the following numbers
20
19
  # 1 or 2 (pessoa singular) - singular person
21
20
  # 5 (pessoa colectiva) - collective person
22
- # 6 (pessoa colectiva pública) - public collective person
23
- # 8 (empresário em nome individual) - individual enterpreneur
24
- # 9 (pessoa colectiva irregular ou número provisório) - provisional number
21
+ # 6 (pessoa colectiva publica) - public collective person
22
+ # 8 (empresario em nome individual) - individual enterpreneur
23
+ # 9 (pessoa colectiva irregular ou numero provisorio) - provisional number
25
24
  # http://www.nif.pt/nif-das-empresas/
26
- %w(PT148166644 PT111623448 PT204874866 PT292261314 PT579104222 PT628910002 PT812627318 PT943935784).each do |number|
25
+ %w[PT148166644 PT111623448 PT204874866 PT292261314 PT579104222 PT628910002 PT812627318 PT943935784].each do |number|
27
26
  it "returns true on a valid number - #{number}" do
28
- expect(subject.validate(number)).to eql(true)
27
+ expect(Valvat::Checksum.validate(number)).to be(true)
29
28
  end
30
29
  end
31
30
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Valvat::Checksum::RO do
4
- %w(RO123456789 RO99908 RO19 RO124 RO13182060).each do |valid_vat|
6
+ %w[RO123456789 RO99908 RO19 RO124 RO13182060].each do |valid_vat|
5
7
  it "returns true on valid VAT #{valid_vat}" do
6
8
  expect(Valvat::Checksum.validate(valid_vat)).to be true
7
9
  end
@@ -1,19 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Valvat::Checksum::SE do
4
- %w(SE136695975501 SE556464687401 SE502052817901 SE556555952201 SE556084097601).each do |valid_vat|
6
+ %w[SE136695975501 SE556464687401 SE502052817901 SE556555952201 SE556084097601].each do |valid_vat|
5
7
  it "returns true on valid VAT #{valid_vat}" do
6
- expect(Valvat::Checksum.validate(valid_vat)).to eql(true)
8
+ expect(Valvat::Checksum.validate(valid_vat)).to be(true)
7
9
  end
8
10
 
9
11
  invalid_vat = "#{valid_vat[0..-4]}#{valid_vat[-1]}#{valid_vat[-2]}#{valid_vat[-3]}"
10
12
 
11
13
  it "returns false on invalid VAT #{invalid_vat}" do
12
- expect(Valvat::Checksum.validate(invalid_vat)).to eql(false)
14
+ expect(Valvat::Checksum.validate(invalid_vat)).to be(false)
13
15
  end
14
16
  end
15
17
 
16
- it "returns false on special case invalid VAT SE556464687400" do
17
- expect(Valvat::Checksum.validate("SE556464687400")).to eql(false)
18
+ it 'returns false on special case invalid VAT SE556464687400' do
19
+ expect(Valvat::Checksum.validate('SE556464687400')).to be(false)
18
20
  end
19
- end
21
+ end
@@ -1,23 +1,25 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Valvat::Checksum::SI do
4
- %w(SI59082437 SI51049406 SI86154575 SI47431857 SI22511822 SI26833921).each do |valid_vat|
6
+ %w[SI59082437 SI51049406 SI86154575 SI47431857 SI22511822 SI26833921].each do |valid_vat|
5
7
  it "returns true on valid VAT #{valid_vat}" do
6
- expect(Valvat::Checksum.validate(valid_vat)).to eql(true)
8
+ expect(Valvat::Checksum.validate(valid_vat)).to be(true)
7
9
  end
8
10
 
9
- invalid_vat = "#{valid_vat[0..-2]}#{valid_vat[-1].to_i+1}"
11
+ invalid_vat = "#{valid_vat[0..-2]}#{valid_vat[-1].to_i + 1}"
10
12
 
11
13
  it "returns false on invalid VAT #{invalid_vat}" do
12
- expect(Valvat::Checksum.validate(invalid_vat)).to eql(false)
14
+ expect(Valvat::Checksum.validate(invalid_vat)).to be(false)
13
15
  end
14
16
  end
15
17
 
16
- it "returns false on special case invalid VAT SI11111107" do
17
- expect(Valvat::Checksum.validate("SI11111107")).to eql(false)
18
+ it 'returns false on special case invalid VAT SI11111107' do
19
+ expect(Valvat::Checksum.validate('SI11111107')).to be(false)
18
20
  end
19
21
 
20
- it "returns false on special case invalid VAT SI01111108" do
21
- expect(Valvat::Checksum.validate("SI01111108")).to eql(false)
22
+ it 'returns false on special case invalid VAT SI01111108' do
23
+ expect(Valvat::Checksum.validate('SI01111108')).to be(false)
22
24
  end
23
25
  end
@@ -1,25 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  begin
4
- require File.dirname(__FILE__) + '/../../tmp/valid_vat_numbers.rb'
6
+ require "#{File.dirname(__FILE__)}/../../tmp/valid_vat_numbers.rb"
5
7
  rescue LoadError
6
- VALID_VAT_NUMBERS = []
8
+ VALID_VAT_NUMBERS = [].freeze
7
9
  end
8
10
 
9
11
  describe Valvat::Checksum do
10
- describe "#validate" do
11
- it "returns true on VAT number with unknown checksum algorithm" do
12
- expect(Valvat::Checksum.validate("CZ699001237")).to eql(true)
12
+ describe '#validate' do
13
+ it 'returns true on VAT number with unknown checksum algorithm' do
14
+ expect(described_class.validate('CZ699001237')).to be(true)
13
15
  end
14
16
 
15
- it "returns false on corrupt number (e.g checks syntax)" do
16
- expect(Valvat::Checksum.validate("FI1234567891")).to eql(false)
17
+ it 'returns false on corrupt number (e.g checks syntax)' do
18
+ expect(described_class.validate('FI1234567891')).to be(false)
17
19
  end
18
20
 
19
21
  VALID_VAT_NUMBERS.each do |valid_vat|
20
22
  it "returns true on valid VAT number #{valid_vat}" do
21
- expect(Valvat::Checksum.validate(valid_vat)).to eql(true)
23
+ expect(described_class.validate(valid_vat)).to be(true)
22
24
  end
23
25
  end
24
26
  end
25
- end
27
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Valvat::Lookup::Fault do
6
+ it "returns {valid: false} on fault 'INVALID_INPUT'" do
7
+ expect(described_class.new({
8
+ fault: { faultstring: 'INVALID_INPUT' }
9
+ }).to_hash).to eql({ valid: false })
10
+ end
11
+
12
+ {
13
+ 'SERVICE_UNAVAILABLE' => Valvat::ServiceUnavailable,
14
+ 'MS_UNAVAILABLE' => Valvat::MemberStateUnavailable,
15
+ 'INVALID_REQUESTER_INFO' => Valvat::InvalidRequester,
16
+ 'TIMEOUT' => Valvat::Timeout,
17
+ 'VAT_BLOCKED' => Valvat::BlockedError,
18
+ 'IP_BLOCKED' => Valvat::BlockedError,
19
+ 'GLOBAL_MAX_CONCURRENT_REQ' => Valvat::RateLimitError,
20
+ 'GLOBAL_MAX_CONCURRENT_REQ_TIME' => Valvat::RateLimitError,
21
+ 'MS_MAX_CONCURRENT_REQ' => Valvat::RateLimitError,
22
+ 'MS_MAX_CONCURRENT_REQ_TIME' => Valvat::RateLimitError,
23
+ 'ANYTHING ELSE' => Valvat::UnknownViesError,
24
+ 'REALLY ANYTHING' => Valvat::UnknownViesError
25
+ }.each do |fault, error|
26
+ it "returns error on fault '#{fault}'" do
27
+ expect(described_class.new({
28
+ fault: { faultstring: fault }
29
+ }).to_hash).to eql({
30
+ error: error.new(fault)
31
+ })
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Valvat::Lookup::Request do
6
+ it 'returns Response on success' do
7
+ response = described_class.new('IE6388047V', {}).perform
8
+ expect(response).to be_a(Valvat::Lookup::Response)
9
+
10
+ # Skip if VIES is down
11
+ expect(response.to_hash[:name]).to eql('GOOGLE IRELAND LIMITED') unless response.is_a?(Valvat::Lookup::Fault)
12
+ end
13
+
14
+ it 'returns Fault on failure' do
15
+ response = described_class.new('XC123123', {}).perform
16
+ expect(response).to be_a(Valvat::Lookup::Fault)
17
+ expect(response.to_hash).to eql({ valid: false })
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Valvat::Lookup::Response do
6
+ it 'removes @xmlns from :check_vat_response hash' do
7
+ expect(described_class.new({
8
+ check_vat_response: { :a => 1, :b => 2, :@xmlns => true }
9
+ }).to_hash).to eql({ a: 1, b: 2 })
10
+ end
11
+
12
+ it "removes 'trader_'-Prefixes :check_vat_response hash" do
13
+ expect(described_class.new({
14
+ check_vat_response: { a: 1, trader_b: 2 }
15
+ }).to_hash).to eql({ a: 1, b: 2 })
16
+ end
17
+
18
+ it 'accepts hash keyed as :check_vat_approx_response' do
19
+ expect(described_class.new({
20
+ check_vat_approx_response: { a: 1, b: 2 }
21
+ }).to_hash).to eql({ a: 1, b: 2 })
22
+ end
23
+
24
+ it 'allows direct access to hash via []' do
25
+ expect(described_class.new({
26
+ check_vat_response: { a: 123, b: 2 }
27
+ })[:a]).to be(123)
28
+ end
29
+ end
@@ -1,257 +1,242 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe Valvat::Lookup do
4
- describe "#validate" do
5
- context "existing VAT number" do
6
-
7
- it "returns true" do
8
- result = Valvat::Lookup.validate("IE6388047V")
9
-
10
- unless result.nil?
11
- expect(result).to eql(true)
12
- else
13
- puts "Skipping IE vies lookup spec"
14
- end
6
+ describe '#validate' do
7
+ context 'with existing VAT number' do
8
+ it 'returns true' do
9
+ result = described_class.validate('IE6388047V')
10
+ # Skip if VIES is down
11
+ expect(result).to be(true) unless result.nil?
15
12
  end
16
13
 
17
- it "allows Valvat instance as input" do
18
- result = Valvat::Lookup.validate(Valvat.new("IE6388047V"))
19
-
20
- unless result.nil?
21
- expect(result).to eql(true)
22
- else
23
- puts "Skipping IE vies lookup spec"
24
- end
14
+ it 'allows Valvat instance as input' do
15
+ result = described_class.validate(Valvat.new('IE6388047V'))
16
+ # Skip if VIES is down
17
+ expect(result).to be(true) unless result.nil?
25
18
  end
26
19
  end
27
20
 
28
- context "not existing VAT number" do
29
- it "returns false" do
30
- result = Valvat::Lookup.validate("IE6388048V")
31
-
32
- unless result.nil?
33
- expect(result).to eql(false)
34
- else
35
- puts "Skipping IE vies lookup spec"
36
- end
21
+ context 'with not existing VAT number' do
22
+ it 'returns false' do
23
+ result = described_class.validate('IE6388048V')
24
+ # Skip if VIES is down
25
+ expect(result).to be(false) unless result.nil?
37
26
  end
38
27
  end
39
28
 
40
- context "invalid country code / input" do
41
- it "returns false" do
42
- expect(Valvat::Lookup.validate("AE259597697")).to eql(false)
43
- expect(Valvat::Lookup.validate("")).to eql(false)
29
+ context 'with invalid country code / input' do
30
+ it 'returns false' do
31
+ expect(described_class.validate('AE259597697')).to be(false)
32
+ expect(described_class.validate('')).to be(false)
44
33
  end
45
34
  end
46
35
 
47
- context "with details" do
48
- it "returns hash of details instead of true" do
49
- result = Valvat::Lookup.validate("IE6388047V", detail: true)
36
+ context 'with details' do
37
+ let(:details) do
38
+ {
39
+ country_code: 'IE',
40
+ vat_number: '6388047V',
41
+ name: 'GOOGLE IRELAND LIMITED',
42
+ address: '3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4',
43
+ valid: true
44
+ }
45
+ end
50
46
 
51
- if result
47
+ it 'returns hash of details instead of true' do
48
+ result = described_class.validate('IE6388047V', detail: true)
49
+ # Skip if VIES is down
50
+ if result
52
51
  expect(result.delete(:request_date)).to be_kind_of(Date)
53
- expect(result).to eql({
54
- country_code: "IE",
55
- vat_number: "6388047V",
56
- name: "GOOGLE IRELAND LIMITED",
57
- address: "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
58
- valid: true
59
- })
60
- else
61
- puts "Skipping IE vies lookup spec; result = #{result.inspect}"
52
+ expect(result).to eql(details)
62
53
  end
63
54
  end
64
55
 
65
- it "still returns false on not existing VAT number" do
66
- result = Valvat::Lookup.validate("LU21416128", detail: true)
67
-
68
- unless result.nil?
69
- expect(result).to eql(false)
70
- else
71
- puts "Skipping LU vies lookup spec"
72
- end
56
+ it 'still returns false on not existing VAT number' do
57
+ result = described_class.validate('LU21416128', detail: true)
58
+ # Skip if VIES is down
59
+ expect(result).to be(false) unless result.nil?
73
60
  end
74
61
  end
75
62
 
76
- context "with request identifier" do
77
- it "returns hash of details instead of true" do
78
- response = Valvat::Lookup.validate("IE6388047V", requester: "IE6388047V")
63
+ context 'with request identifier' do
64
+ let(:response) { described_class.validate('IE6388047V', requester: 'IE6388047V') }
65
+ let(:details) do
66
+ {
67
+ country_code: 'IE',
68
+ vat_number: '6388047V',
69
+ name: 'GOOGLE IRELAND LIMITED',
70
+ company_type: nil,
71
+ address: '3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4',
72
+ valid: true
73
+ }
74
+ end
79
75
 
76
+ it 'returns hash of details instead of true' do
77
+ # Skip if VIES is down
80
78
  if response
81
- expect(response[:request_identifier].size).to eql(16)
82
- request_identifier = response[:request_identifier]
79
+ expect(response.delete(:request_identifier).size).to be(16)
83
80
  expect(response.delete(:request_date)).to be_kind_of(Date)
84
- expect(response).to eql({
85
- country_code: "IE",
86
- vat_number: "6388047V",
87
- name: "GOOGLE IRELAND LIMITED",
88
- company_type:nil,
89
- address: "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
90
- request_identifier: request_identifier,
91
- valid: true
92
- })
93
- else
94
- puts "Skipping IE vies lookup spec"
81
+ expect(response).to eql(details)
95
82
  end
96
83
  end
97
84
 
98
- it "supports old :requester_vat option for backwards stability" do
85
+ it 'supports old :requester_vat option for backwards stability' do
99
86
  expect(
100
- Valvat::Lookup.new("IE6388047V", requester_vat: "LU21416127").instance_variable_get(:@options)[:requester]
101
- ).to eql("LU21416127")
102
-
103
- expect(
104
- Valvat::Lookup.new("IE6388047V", requester: "LU21416128").instance_variable_get(:@options)[:requester]
105
- ).to eql("LU21416128")
87
+ described_class.new('IE6388047V', requester_vat: 'LU21416127').instance_variable_get(:@options)[:requester]
88
+ ).to eql('LU21416127')
106
89
  end
107
90
  end
108
91
  end
109
92
 
110
- describe "#validate with VIES test enviroment" do
111
-
112
- let(:options) { {savon: {wsdl: "https://ec.europa.eu/taxation_customs/vies/checkVatTestService.wsdl"}, skip_local_validation: true} }
93
+ describe '#validate with VIES test enviroment' do
94
+ let(:options) do
95
+ { savon: { wsdl: 'https://ec.europa.eu/taxation_customs/vies/checkVatTestService.wsdl' },
96
+ skip_local_validation: true }
97
+ end
113
98
 
114
- context "Valid request with Valid VAT Number" do
115
- subject{ Valvat::Lookup.validate("DE100", options) }
99
+ context 'with valid request with valid VAT number' do
100
+ subject(:result) { described_class.validate('DE100', options) }
116
101
 
117
- it "returns true" do
118
- expect(subject).to eql(true)
102
+ it 'returns true' do
103
+ expect(result).to be(true)
119
104
  end
120
105
  end
121
106
 
122
- context "Valid request with an Invalid VAT Number" do
123
- subject{ Valvat::Lookup.validate("DE200", options) }
107
+ context 'with valid request with an invalid VAT number' do
108
+ subject(:result) { described_class.validate('DE200', options) }
124
109
 
125
- it "returns false" do
126
- expect(subject).to eql(false)
110
+ it 'returns false' do
111
+ expect(result).to be(false)
127
112
  end
128
113
  end
129
114
 
130
- context "Error : INVALID_INPUT" do
131
- subject{ Valvat::Lookup.validate("DE201", options) }
115
+ describe 'Error : INVALID_INPUT' do
116
+ subject(:result) { described_class.validate('DE201', options) }
132
117
 
133
- it "returns false" do
134
- expect(subject).to eql(false)
118
+ it 'returns false' do
119
+ expect(result).to be(false)
135
120
  end
136
121
  end
137
122
 
138
- context "Error : INVALID_REQUESTER_INFO" do
139
- subject{ Valvat::Lookup.validate("DE202", options) }
123
+ describe 'Error : INVALID_REQUESTER_INFO' do
124
+ subject(:result) { described_class.validate('DE202', options) }
140
125
 
141
- it "raises Valvat::InvalidRequester" do
142
- expect{ subject }.to raise_error(Valvat::InvalidRequester)
126
+ it 'raises Valvat::InvalidRequester' do
127
+ expect { result }.to raise_error(Valvat::InvalidRequester)
143
128
  end
144
129
  end
145
130
 
146
- context "Error : SERVICE_UNAVAILABLE" do
147
- subject{ Valvat::Lookup.validate("DE300", options) }
131
+ describe 'Error : SERVICE_UNAVAILABLE' do
132
+ subject(:result) { described_class.validate('DE300', options) }
148
133
 
149
- it "returns nil" do
150
- expect(subject).to eql(nil)
134
+ it 'returns nil' do
135
+ expect(result).to be(nil)
151
136
  end
152
137
 
153
- it "raises error with raise_error: true" do
154
- expect{
155
- Valvat::Lookup.validate("DE300", options.merge(raise_error: true)
156
- ) }.to raise_error(Valvat::ServiceUnavailable)
138
+ it 'raises error with raise_error: true' do
139
+ expect do
140
+ described_class.validate('DE300', options.merge(raise_error: true))
141
+ end.to raise_error(Valvat::ServiceUnavailable)
157
142
  end
158
143
  end
159
144
 
160
- context "Error : MS_UNAVAILABLE" do
161
- subject{ Valvat::Lookup.validate("DE301", options) }
145
+ describe 'Error : MS_UNAVAILABLE' do
146
+ subject(:result) { described_class.validate('DE301', options) }
162
147
 
163
- it "returns nil" do
164
- expect(subject).to eql(nil)
148
+ it 'returns nil' do
149
+ expect(result).to be(nil)
165
150
  end
166
151
 
167
- it "raises error with raise_error: true" do
168
- expect{
169
- Valvat::Lookup.validate("DE301", options.merge(raise_error: true)
170
- ) }.to raise_error(Valvat::MemberStateUnavailable)
152
+ it 'raises error with raise_error: true' do
153
+ expect do
154
+ described_class.validate('DE301', options.merge(raise_error: true))
155
+ end.to raise_error(Valvat::MemberStateUnavailable)
171
156
  end
172
157
  end
173
158
 
174
- context "Error : TIMEOUT" do
175
- subject{ Valvat::Lookup.validate("DE302", options) }
159
+ describe 'Error : TIMEOUT' do
160
+ subject(:result) { described_class.validate('DE302', options) }
176
161
 
177
- it "raises error" do
178
- expect{ subject }.to raise_error(Valvat::Timeout)
162
+ it 'raises error' do
163
+ expect { result }.to raise_error(Valvat::Timeout)
179
164
  end
180
165
 
181
- it "returns nil with raise_error set to false" do
182
- expect(Valvat::Lookup.validate("DE302", options.merge(raise_error: false))).to eql(nil)
166
+ it 'returns nil with raise_error set to false' do
167
+ expect(described_class.validate('DE302', options.merge(raise_error: false))).to be(nil)
183
168
  end
184
169
  end
185
170
 
186
- context "Error : VAT_BLOCKED" do
187
- subject{ Valvat::Lookup.validate("DE400", options) }
171
+ describe 'Error : VAT_BLOCKED' do
172
+ subject(:result) { described_class.validate('DE400', options) }
188
173
 
189
- it "raises error" do
190
- expect{ subject }.to raise_error(Valvat::BlockedError, /VAT_BLOCKED/)
174
+ it 'raises error' do
175
+ expect { result }.to raise_error(Valvat::BlockedError, /VAT_BLOCKED/)
191
176
  end
192
177
 
193
- it "returns nil with raise_error set to false" do
194
- expect(Valvat::Lookup.validate("DE400", options.merge(raise_error: false))).to eql(nil)
178
+ it 'returns nil with raise_error set to false' do
179
+ expect(described_class.validate('DE400', options.merge(raise_error: false))).to be(nil)
195
180
  end
196
181
  end
197
182
 
198
- context "Error : IP_BLOCKED" do
199
- subject{ Valvat::Lookup.validate("DE401", options) }
183
+ describe 'Error : IP_BLOCKED' do
184
+ subject(:result) { described_class.validate('DE401', options) }
200
185
 
201
- it "raises error" do
202
- expect{ subject }.to raise_error(Valvat::BlockedError, /IP_BLOCKED/)
186
+ it 'raises error' do
187
+ expect { result }.to raise_error(Valvat::BlockedError, /IP_BLOCKED/)
203
188
  end
204
189
 
205
- it "returns nil with raise_error set to false" do
206
- expect(Valvat::Lookup.validate("DE401", options.merge(raise_error: false))).to eql(nil)
190
+ it 'returns nil with raise_error set to false' do
191
+ expect(described_class.validate('DE401', options.merge(raise_error: false))).to be(nil)
207
192
  end
208
193
  end
209
194
 
210
- context "Error : GLOBAL_MAX_CONCURRENT_REQ" do
211
- subject{ Valvat::Lookup.validate("DE500", options) }
195
+ describe 'Error : GLOBAL_MAX_CONCURRENT_REQ' do
196
+ subject(:result) { described_class.validate('DE500', options) }
212
197
 
213
- it "raises error" do
214
- expect{ subject }.to raise_error(Valvat::RateLimitError, /GLOBAL_MAX_CONCURRENT_REQ/)
198
+ it 'raises error' do
199
+ expect { result }.to raise_error(Valvat::RateLimitError, /GLOBAL_MAX_CONCURRENT_REQ/)
215
200
  end
216
201
 
217
- it "returns nil with raise_error set to false" do
218
- expect(Valvat::Lookup.validate("DE500", options.merge(raise_error: false))).to eql(nil)
202
+ it 'returns nil with raise_error set to false' do
203
+ expect(described_class.validate('DE500', options.merge(raise_error: false))).to be(nil)
219
204
  end
220
205
  end
221
206
 
222
- context "Error : GLOBAL_MAX_CONCURRENT_REQ_TIME" do
223
- subject{ Valvat::Lookup.validate("DE501", options) }
207
+ describe 'Error : GLOBAL_MAX_CONCURRENT_REQ_TIME' do
208
+ subject(:result) { described_class.validate('DE501', options) }
224
209
 
225
- it "raises error" do
226
- expect{ subject }.to raise_error(Valvat::RateLimitError, /GLOBAL_MAX_CONCURRENT_REQ_TIME/)
210
+ it 'raises error' do
211
+ expect { result }.to raise_error(Valvat::RateLimitError, /GLOBAL_MAX_CONCURRENT_REQ_TIME/)
227
212
  end
228
213
 
229
- it "returns nil with raise_error set to false" do
230
- expect(Valvat::Lookup.validate("DE501", options.merge(raise_error: false))).to eql(nil)
214
+ it 'returns nil with raise_error set to false' do
215
+ expect(described_class.validate('DE501', options.merge(raise_error: false))).to be(nil)
231
216
  end
232
217
  end
233
218
 
234
- context "Error : MS_MAX_CONCURRENT_REQ" do
235
- subject{ Valvat::Lookup.validate("DE600", options) }
219
+ describe 'Error : MS_MAX_CONCURRENT_REQ' do
220
+ subject(:result) { described_class.validate('DE600', options) }
236
221
 
237
- it "raises error" do
238
- expect{ subject }.to raise_error(Valvat::RateLimitError, /MS_MAX_CONCURRENT_REQ/)
222
+ it 'raises error' do
223
+ expect { result }.to raise_error(Valvat::RateLimitError, /MS_MAX_CONCURRENT_REQ/)
239
224
  end
240
225
 
241
- it "returns nil with raise_error set to false" do
242
- expect(Valvat::Lookup.validate("DE600", options.merge(raise_error: false))).to eql(nil)
226
+ it 'returns nil with raise_error set to false' do
227
+ expect(described_class.validate('DE600', options.merge(raise_error: false))).to be(nil)
243
228
  end
244
229
  end
245
230
 
246
- context "Error : MS_MAX_CONCURRENT_REQ_TIME" do
247
- subject{ Valvat::Lookup.validate("DE601", options) }
231
+ describe 'Error : MS_MAX_CONCURRENT_REQ_TIME' do
232
+ subject(:result) { described_class.validate('DE601', options) }
248
233
 
249
- it "raises error" do
250
- expect{ subject }.to raise_error(Valvat::RateLimitError, /MS_MAX_CONCURRENT_REQ_TIME/)
234
+ it 'raises error' do
235
+ expect { result }.to raise_error(Valvat::RateLimitError, /MS_MAX_CONCURRENT_REQ_TIME/)
251
236
  end
252
237
 
253
- it "returns nil with raise_error set to false" do
254
- expect(Valvat::Lookup.validate("DE601", options.merge(raise_error: false))).to eql(nil)
238
+ it 'returns nil with raise_error set to false' do
239
+ expect(described_class.validate('DE601', options.merge(raise_error: false))).to be(nil)
255
240
  end
256
241
  end
257
242
  end