steuernummer 1.0.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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Y2QwMGNjMzg3MzE0OTZmMmRiMjIwNGIzNzdkOWMwMzJkMDI5MzJiNw==
4
+ YzNkZDA0ZjBkN2VlNzgxZmRmZDM1YTJmZTVhZDRiYzE2ZjVkM2I1NA==
5
5
  data.tar.gz: !binary |-
6
- M2QwMzdiNTVmOWM0ZDNiMDk3YzJhYTdjMjI5M2UyZjJmOGY1NmVlNw==
6
+ NjgzNjVhMDk0OGUwMGNiZTBlZTFlNzQ3NWZjMjI4ZjRlYWE3MzFmNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YmM5ZWZlZGJiM2M1NDY4YWMxNWFkZGRhZGE3MTgxNjFmNTI2YjgwOTc1NTc3
10
- YzllMzgyMjkxZWMyYTNhMTg4M2UwYTQ3NzVlM2I2NTE0YjFlYTAxMDQzM2Qy
11
- NjUzYWZmYjgwOTAyN2Q3YzE3MDVhYmZjYjcyNjFjNWYzYTg4ZTg=
9
+ MzE5MTUyYWEyZmVlMjlkYzc2YTMzNGRmYmYzZDI5Mzg4N2JmYTFmNDZmNDRh
10
+ ZTQyNDM3Y2Q0Yjg4MzU0YjE3YzdiYWQxNWY5OTBiYzA4NjM3YmRiNTJjOTY0
11
+ NzcxNGQwOTBhMTlhMDllMzIzMTgwNmY4ZGM1ZmU5ODEyMmUwNTg=
12
12
  data.tar.gz: !binary |-
13
- YjY1ZDRiODkwZjg3MTZlNTVlMDBjYWNjNGI1NmJhM2I4ZjFiNTUzZjlmODM3
14
- YzVjMzRmOTY3MzI1Zjg2OWJhNDg0MzJkYTRmNjRkNTY3ZTQ3NDBjMDRmYjE5
15
- ODk3YTg3ZjY1Mzc2MmNhMzE5OGE3ZjNhYzM5NWI2ZjY0OTFjZWU=
13
+ Mjg1ZDk5MjBmYTFmMWFjNTA3Mzc5MGY4YmViMTY0YmU3YTE5YTY2MmNmNzM2
14
+ MDk4MTZiNWIzZGZiYzc4NTAwNDA1M2QyY2FmZWVjNDIwM2JiODJmN2Q0NmMz
15
+ MDdhNTYxNDQzMTVmY2QwYjkyMWRiZDlhMzFjNDRkZjdhNGQxOGI=
@@ -4,6 +4,7 @@ require "steuernummer/tax_table"
4
4
 
5
5
 
6
6
  class Steuernummer
7
+
7
8
  # Validate your German Steuernummer
8
9
  #
9
10
  # Example:
@@ -25,16 +26,30 @@ class Steuernummer
25
26
  #
26
27
  # ----------------------------------------------------------------
27
28
  #
29
+ # >> tax_no = Steuernummer.new('151/815/08156','unknown')
30
+ # >> tax_no.is_valid?
31
+ # => true
32
+ #
33
+ # >> tax_no.region_wide_number
34
+ # => {:number => '151/815/08156', :region => 'unknown'}
35
+ #
36
+ # >> tax_no.country_wide_number
37
+ # => RuntimeError: Can't determine country wide number for a region wide number without knowing the region....
38
+ #
39
+ # >> Steuernummer.valid_regions
40
+ # => ["Baden-Württemberg", "Bayern", "Berlin", "Brandenburg",....]
41
+ #
28
42
  # Arguments:
29
43
  # steuernummer: (String)
30
44
  # region: (String)
31
- #
32
45
 
33
46
 
34
47
  def initialize(tax_string, region = 'unknown')
35
- raise("Please use a String as argument") if tax_string.class != String
36
- unless region == 'unknown' || (Steuernummer::TaxTable.tax_regions.include? region)
37
- raise("unknown region, please use one of the following #{Steuernummer::TaxTable.tax_regions.join(', ')}")
48
+ if tax_string.class != String
49
+ raise("Please use a String as argument")
50
+ end
51
+ unless (region == 'unknown') || (Steuernummer.valid_regions.include? region)
52
+ raise("unknown region, please use 'unknown' or one of the entries you can get from Steuernummer.valid_regions}")
38
53
  end
39
54
 
40
55
  @tax_string = tax_string
@@ -42,18 +57,6 @@ class Steuernummer
42
57
  @tax_rules = get_tax_rules(tax_string)
43
58
  end
44
59
 
45
- def get_tax_rules(tax_string)
46
- tax_rules = Array.new
47
- Steuernummer::TaxTable.tax_rules.each do |tax_rule|
48
- if tax_string =~ tax_rule[:match_pattern_region]
49
- tax_rules << tax_rule.merge(:type => :region)
50
- elsif tax_string =~ tax_rule[:match_pattern_country]
51
- tax_rules << tax_rule.merge(:type => :country)
52
- end
53
- end
54
- tax_rules
55
- end
56
-
57
60
  def is_valid?
58
61
  if @provided_region != 'unknown'
59
62
  regions = @tax_rules.map {|x| x[:region]}
@@ -63,26 +66,14 @@ class Steuernummer
63
66
  end
64
67
  end
65
68
 
66
- def get_number_type
67
- # returns :country or :region
68
- tax_rule = @tax_rules.uniq{|x| x[:type]}
69
- if tax_rule.count > 1
70
- raise("both country and region type found, should be impossible!")
71
- else
72
- tax_rule.first[:type]
73
- end
74
- end
75
-
76
69
  # (German: Vereinheitlichtes Bundesschema)
77
70
  def country_wide_number
78
71
  return nil if !is_valid?
79
72
  if get_number_type == :country
80
73
  {:number => @tax_string, :region => @tax_rules.first[:region]}
81
74
  elsif (@tax_rules.count > 1) && (@provided_region == 'unknown')
82
- raise("Can't determine country wide number for a region wide
83
- number without knowing the region.
84
- Please pass one of the following as the second argument:
85
- #{Steuernummer::TaxTable.tax_regions.join(', ')} ")
75
+ raise("Can't determine country wide number for a region wide number without knowing the region.
76
+ Please use only entries you can get from Steuernummer.valid_regions")
86
77
  else
87
78
  tax_rule = get_tax_rule_on_region
88
79
 
@@ -115,6 +106,30 @@ class Steuernummer
115
106
  end
116
107
  end
117
108
 
109
+ def self.valid_regions
110
+ Steuernummer::TaxTable.tax_rules.map {|x| x[:region]}
111
+ end
112
+
113
+
114
+
115
+
116
+
117
+ # ----------------------------------------------------------------
118
+ # private functions
119
+ # ----------------------------------------------------------------
120
+ private
121
+
122
+
123
+ def get_number_type
124
+ # returns :country or :region
125
+ tax_rule = @tax_rules.uniq{|x| x[:type]}
126
+ if tax_rule.count > 1
127
+ raise("both country and region type found, should be impossible!")
128
+ else
129
+ tax_rule.first[:type]
130
+ end
131
+ end
132
+
118
133
  def get_tax_rule_on_region
119
134
  if @tax_rules.count > 1
120
135
  possible_regions = @tax_rules.map {|x| x[:region]}
@@ -124,4 +139,17 @@ class Steuernummer
124
139
  @tax_rules.first
125
140
  end
126
141
  end
142
+
143
+
144
+ def get_tax_rules(tax_string)
145
+ tax_rules = Array.new
146
+ Steuernummer::TaxTable.tax_rules.each do |tax_rule|
147
+ if tax_string =~ tax_rule[:match_pattern_region]
148
+ tax_rules << tax_rule.merge(:type => :region)
149
+ elsif tax_string =~ tax_rule[:match_pattern_country]
150
+ tax_rules << tax_rule.merge(:type => :country)
151
+ end
152
+ end
153
+ tax_rules
154
+ end
127
155
  end
@@ -5,105 +5,100 @@ class Steuernummer::TaxTable
5
5
  # All values are based on: http://de.wikipedia.org/wiki/Steuernummer
6
6
  # To keep it a bit readible the variable names are kept the same as
7
7
  # in the wikipedia entry.
8
- def self.tax_regions
9
- Steuernummer::TaxTable.tax_rules.map {|x| x[:region]}
10
- end
11
-
12
-
13
8
  def self.tax_rules
14
9
  [{:region => 'Baden-Württemberg',
15
- :match_pattern_region => /(?<ff>\d{2})(?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
16
- :match_pattern_country => /28(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
10
+ :match_pattern_region => /\A(?<ff>\d{2})(?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
11
+ :match_pattern_country => /\A28(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
17
12
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}#{bbb}/#{uuuu}#{p}"},
18
13
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "28#{ff}0#{bbb}#{uuuu}#{p}"}},
19
14
 
20
15
  {:region => 'Bayern',
21
- :match_pattern_region => /(?<fff>\d{3})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
22
- :match_pattern_country => /9(?<fff>\d{3})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
16
+ :match_pattern_region => /\A(?<fff>\d{3})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
17
+ :match_pattern_country => /\A9(?<fff>\d{3})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
23
18
  :to_region_wide => lambda {|fff,bbb,uuuu,p| "#{fff}/#{bbb}/#{uuuu}#{p}"},
24
19
  :to_country_wide => lambda {|fff,bbb,uuuu,p| "9#{fff}0#{bbb}#{uuuu}#{p}"}},
25
20
 
26
21
  {:region => 'Berlin',
27
- :match_pattern_region => /(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
28
- :match_pattern_country => /11(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
22
+ :match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
23
+ :match_pattern_country => /\A11(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
29
24
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
30
25
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "11#{ff}0#{bbb}#{uuuu}#{p}"}},
31
26
 
32
27
  {:region => 'Brandenburg',
33
- :match_pattern_region => /0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
34
- :match_pattern_country => /30(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
28
+ :match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
29
+ :match_pattern_country => /\A30(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
35
30
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
36
31
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "30#{ff}0#{bbb}#{uuuu}#{p}"}},
37
32
 
38
33
  {:region => 'Bremen',
39
- :match_pattern_region => /(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})/,
40
- :match_pattern_country => /24(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
34
+ :match_pattern_region => /\A(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})\z/,
35
+ :match_pattern_country => /\A24(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
41
36
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff} #{bbb} #{uuuu}#{p}"},
42
37
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "24#{ff}0#{bbb}#{uuuu}#{p}"}},
43
38
 
44
39
  {:region => 'Hamburg',
45
- :match_pattern_region => /(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
46
- :match_pattern_country => /22(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
40
+ :match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
41
+ :match_pattern_country => /\A22(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
47
42
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
48
43
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "22#{ff}0#{bbb}#{uuuu}#{p}"}},
49
44
 
50
45
  {:region => 'Hessen',
51
- :match_pattern_region => /0(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})/,
52
- :match_pattern_country => /26(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
46
+ :match_pattern_region => /\A0(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})\z/,
47
+ :match_pattern_country => /\A26(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
53
48
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff} #{bbb} #{uuuu}#{p}"},
54
49
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "26#{ff}0#{bbb}#{uuuu}#{p}"}},
55
50
 
56
51
  {:region => 'Mecklenburg-Vorpommern',
57
- :match_pattern_region => /0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
58
- :match_pattern_country => /40(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
52
+ :match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
53
+ :match_pattern_country => /\A40(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
59
54
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
60
55
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "40#{ff}0#{bbb}#{uuuu}#{p}"}},
61
56
 
62
57
  {:region => 'Niedersachsen',
63
- :match_pattern_region => /(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
64
- :match_pattern_country => /23(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
58
+ :match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
59
+ :match_pattern_country => /\A23(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
65
60
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}#{p}"},
66
61
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "23#{ff}0#{bbb}#{uuuu}#{p}"}},
67
62
 
68
63
  {:region => 'Nordrhein-Westfalen',
69
- :match_pattern_region => /(?<fff>\d{3})[\/](?<bbbb>\d{4})[\/](?<uuu>\d{3})(?<p>\d{1})/,
70
- :match_pattern_country => /5(?<fff>\d{3})0(?<bbbb>\d{4})(?<uuu>\d{3})(?<p>\d{1})/,
64
+ :match_pattern_region => /\A(?<fff>\d{3})[\/](?<bbbb>\d{4})[\/](?<uuu>\d{3})(?<p>\d{1})\z/,
65
+ :match_pattern_country => /\A5(?<fff>\d{3})0(?<bbbb>\d{4})(?<uuu>\d{3})(?<p>\d{1})\z/,
71
66
  :to_region_wide => lambda {|fff,bbbb,uuu,p| "#{fff}/#{bbbb}/#{uuu}#{p}"},
72
67
  :to_country_wide => lambda {|fff,bbbb,uuu,p| "5#{fff}0#{bbbb}#{uuu}#{p}"}},
73
68
 
74
69
  {:region => 'Rheinland-Pfalz',
75
- :match_pattern_region => /(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})[\/](?<p>\d{1})/,
76
- :match_pattern_country => /27(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/,
70
+ :match_pattern_region => /\A(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})[\/](?<p>\d{1})\z/,
71
+ :match_pattern_country => /\A27(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/,
77
72
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff}/#{bbb}/#{uuuu}/#{p}"},
78
73
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "27#{ff}0#{bbb}#{uuuu}#{p}"}},
79
74
 
80
75
  {:region => 'Saarland',
81
- :match_pattern_region => /0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
82
- :match_pattern_country => /10(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
76
+ :match_pattern_region => /\A0(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
77
+ :match_pattern_country => /\A10(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
83
78
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "0#{ff}/#{bbb}/#{uuuu}#{p}"},
84
79
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "10#{ff}0#{bbb}#{uuuu}#{p}"}},
85
80
 
86
81
  {:region => 'Sachsen',
87
- :match_pattern_region => /2(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
88
- :match_pattern_country => /32(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
82
+ :match_pattern_region => /\A2(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
83
+ :match_pattern_country => /\A32(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
89
84
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "2#{ff}/#{bbb}/#{uuuu}#{p}"},
90
85
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "32#{ff}0#{bbb}#{uuuu}#{p}"}},
91
86
 
92
87
  {:region => 'Sachsen-Anhalt',
93
- :match_pattern_region => /1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
94
- :match_pattern_country => /31(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
88
+ :match_pattern_region => /\A1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
89
+ :match_pattern_country => /\A31(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
95
90
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "1#{ff}/#{bbb}/#{uuuu}#{p}"},
96
91
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "31#{ff}0#{bbb}#{uuuu}#{p}"}},
97
92
 
98
93
  {:region => 'Schleswig-Holstein',
99
- :match_pattern_region => /(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})/,
100
- :match_pattern_country => /21(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
94
+ :match_pattern_region => /\A(?<ff>\d{2})\s(?<bbb>\d{3})\s(?<uuuu>\d{4})(?<p>\d{1})\z/,
95
+ :match_pattern_country => /\A21(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
101
96
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "#{ff} #{bbb} #{uuuu}#{p}"},
102
97
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "21#{ff}0#{bbb}#{uuuu}#{p}"}},
103
98
 
104
99
  {:region => 'Thüringen',
105
- :match_pattern_region => /1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})/,
106
- :match_pattern_country => /41(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})/ ,
100
+ :match_pattern_region => /\A1(?<ff>\d{2})[\/](?<bbb>\d{3})[\/](?<uuuu>\d{4})(?<p>\d{1})\z/,
101
+ :match_pattern_country => /\A41(?<ff>\d{2})0(?<bbb>\d{3})(?<uuuu>\d{4})(?<p>\d{1})\z/ ,
107
102
  :to_region_wide => lambda {|ff,bbb,uuuu,p| "1#{ff}/#{bbb}/#{uuuu}#{p}"},
108
103
  :to_country_wide => lambda {|ff,bbb,uuuu,p| "41#{ff}0#{bbb}#{uuuu}#{p}"}}
109
104
  ]
@@ -1,3 +1,3 @@
1
1
  class Steuernummer
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -52,6 +52,28 @@ class TestSteuernummer < Test::Unit::TestCase
52
52
  assert_equal(wiki_entry[2], tax_number.country_wide_number[:number], "Error in number: expected: #{wiki_entry[2]}, but got: #{tax_number.country_wide_number[:number]}")
53
53
  end
54
54
  end
55
+
56
+ def test_faulty_region_number_entries
57
+ # number to long
58
+ assert_equal(false, (Steuernummer.new('93815/08152333','Baden-Württemberg').is_valid?))
59
+ end
60
+
61
+ def test_needs_region
62
+ e = assert_raise RuntimeError do
63
+ Steuernummer.new('151/815/08156','unknown').country_wide_number
64
+ end
65
+ assert e.message.include? "Can't determine country wide number"
66
+ end
67
+
68
+ def test_faulty_country_number_entries
69
+ # number to long
70
+ assert_equal(false, (Steuernummer.new('28930815081522342323','Baden-Württemberg').is_valid?))
71
+ end
72
+
73
+
74
+ def test_should_return_array_with_possible_regions
75
+ assert_equal(16, Steuernummer.valid_regions.count)
76
+ end
55
77
  end
56
78
 
57
79
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: steuernummer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bart Ariens
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-10 00:00:00.000000000 Z
11
+ date: 2014-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler