countries 5.7.0 → 5.7.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
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/data/countries/PS.yaml +2 -0
- data/lib/countries/data/subdivisions/IR.yaml +1 -1
- data/lib/countries/version.rb +1 -1
- metadata +2 -28
- data/.codeclimate.yml +0 -61
- data/.github/FUNDING.yml +0 -1
- data/.github/workflows/codeql-analysis.yml +0 -70
- data/.github/workflows/tests.yml +0 -32
- data/.gitignore +0 -25
- data/.rspec +0 -2
- data/.rubocop.yml +0 -49
- data/CHANGELOG.md +0 -776
- data/Gemfile +0 -15
- data/Gemfile.lock +0 -102
- data/LICENSE +0 -24
- data/README.md +0 -404
- data/Rakefile +0 -62
- data/UPGRADE.md +0 -39
- data/bin/console +0 -15
- data/countries.gemspec +0 -31
- data/spec/00_global_spec.rb +0 -58
- data/spec/configuration_spec.rb +0 -60
- data/spec/country_spec.rb +0 -1327
- data/spec/data_spec.rb +0 -260
- data/spec/mongoid_spec.rb +0 -61
- data/spec/perf_spec.rb +0 -74
- data/spec/spec_helper.rb +0 -19
- data/spec/subdivision_spec.rb +0 -42
- data/spec/thread_safety_spec.rb +0 -47
- data/spec/timezone_spec.rb +0 -34
data/spec/data_spec.rb
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require 'benchmark'
|
|
5
|
-
|
|
6
|
-
describe ISO3166::Data do
|
|
7
|
-
it 'responds to call' do
|
|
8
|
-
data = ISO3166::Data.new('US').call
|
|
9
|
-
expect(data['translated_names']).to be_a Array
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
it 'can load selective locales' do
|
|
13
|
-
# ISO3166::Data.update_cache
|
|
14
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
15
|
-
data = ISO3166::Data.new('US').call
|
|
16
|
-
expect(data['translated_names'].size).to eq 3
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
it 'can load selective locales and reload efficiently' do
|
|
20
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
21
|
-
data = ISO3166::Data.new('US').call
|
|
22
|
-
expect(data['translations']).to eq('de' => 'Vereinigte Staaten', 'es' => 'Estados Unidos', 'en' => 'United States')
|
|
23
|
-
expect(data['translated_names'].sort).to eq ['Vereinigte Staaten', 'Estados Unidos', 'United States'].sort
|
|
24
|
-
ISO3166.configuration.locales = [:en]
|
|
25
|
-
data = ISO3166::Data.new('US').call
|
|
26
|
-
expect(data['translated_names'].size).to eq 1
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
it 'only loads subdivision translations for the configured locales' do
|
|
30
|
-
ISO3166.configuration.locales = %i[en]
|
|
31
|
-
ISO3166::Data.reset
|
|
32
|
-
subdivisions = ISO3166::Data.subdivisions('US')
|
|
33
|
-
expect(subdivisions.values.first['translations'].keys).to eq(%w[en])
|
|
34
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
35
|
-
ISO3166::Data.reset
|
|
36
|
-
subdivisions = ISO3166::Data.subdivisions('US')
|
|
37
|
-
expect(subdivisions.values.first['translations'].keys).to eq(%w[es de en])
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
describe '#codes' do
|
|
41
|
-
it 'returns an array' do
|
|
42
|
-
data = ISO3166::Data.codes
|
|
43
|
-
expect(data).to be_a Array
|
|
44
|
-
expect(data.size).to eq 249
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it 'locales will load prior to return results' do
|
|
49
|
-
# require 'memory_profiler'
|
|
50
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
51
|
-
# report = MemoryProfiler.report do
|
|
52
|
-
ISO3166::Data.update_cache
|
|
53
|
-
# end
|
|
54
|
-
|
|
55
|
-
# report.pretty_print(to_file: 'tmp/memory/3_locales')
|
|
56
|
-
ISO3166::Data.update_cache
|
|
57
|
-
|
|
58
|
-
ISO3166.configure do |config|
|
|
59
|
-
config.locales = %i[af am ar as az be bg bn br bs ca cs cy da de dz el en
|
|
60
|
-
eo es et eu fa fi fo fr ga gl gu he hi hr hu hy ia id
|
|
61
|
-
is it ja ka kk km kn ko ku lt lv mi mk ml mn mr ms mt
|
|
62
|
-
nb ne nl nn oc or pa pl ps pt ro ru rw si sk sl so sq
|
|
63
|
-
sr sv sw ta te th ti tk tl tr tt ug uk ve vi wa wo xh
|
|
64
|
-
zh zu]
|
|
65
|
-
end
|
|
66
|
-
# puts Benchmark.measure {ISO3166::Data.update_cache}
|
|
67
|
-
|
|
68
|
-
# report = MemoryProfiler.report do
|
|
69
|
-
ISO3166::Data.update_cache
|
|
70
|
-
# end
|
|
71
|
-
|
|
72
|
-
# report.pretty_print(to_file: 'tmp/memory/all_locales')
|
|
73
|
-
|
|
74
|
-
expect(ISO3166::Country.new('DE').translations.size).to eq 92
|
|
75
|
-
|
|
76
|
-
expect(ISO3166.configuration.loaded_locales.size).to eq 92
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it 'locales will load prior and be cached' do
|
|
80
|
-
ISO3166.reset
|
|
81
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
82
|
-
expect(ISO3166::Data.send(:locales_to_load)).to eql(%w[es de en])
|
|
83
|
-
ISO3166::Data.update_cache
|
|
84
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
85
|
-
expect(ISO3166::Data.send(:locales_to_load)).to eql([])
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it 'locales will load prior and be cached' do
|
|
89
|
-
ISO3166.reset
|
|
90
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
91
|
-
expect(ISO3166::Data.send(:locales_to_remove)).to eql([])
|
|
92
|
-
expect(ISO3166::Country.new('DE').translation('de')).to eq 'Deutschland'
|
|
93
|
-
ISO3166::Data.update_cache
|
|
94
|
-
ISO3166.configuration.locales = %i[es en]
|
|
95
|
-
expect(ISO3166::Data.send(:locales_to_remove)).to eql(['de'])
|
|
96
|
-
expect(ISO3166::Country.new('DE').translation('de')).to eq nil
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
describe '#load_cache' do
|
|
100
|
-
it 'will return an empty hash for an unsupported locale' do
|
|
101
|
-
file_array = %w[locales unsupported.json]
|
|
102
|
-
expect(ISO3166::Data.send(:load_cache, file_array)).to eql({})
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
it 'will return json for a supported locale' do
|
|
106
|
-
file_array = %w[locales en.json]
|
|
107
|
-
expect(ISO3166::Data.send(:load_cache, file_array)).not_to be_empty
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
describe 'hotloading existing data' do
|
|
112
|
-
before do
|
|
113
|
-
ISO3166::Data.register(
|
|
114
|
-
alpha2: 'TW',
|
|
115
|
-
iso_short_name: 'NEW Taiwan',
|
|
116
|
-
subdivisions: {
|
|
117
|
-
CHA: { name: 'New Changhua' },
|
|
118
|
-
CYI: { name: 'New Municipality' }
|
|
119
|
-
},
|
|
120
|
-
translations: {
|
|
121
|
-
'en' => 'NEW Taiwan',
|
|
122
|
-
'de' => 'NEW Taiwan'
|
|
123
|
-
}
|
|
124
|
-
)
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
subject { ISO3166::Country.new('TW') }
|
|
128
|
-
|
|
129
|
-
it 'can be done' do
|
|
130
|
-
data = ISO3166::Data.new('TW').call
|
|
131
|
-
ISO3166.configuration.locales = %i[es de de]
|
|
132
|
-
expect(data['iso_short_name']).to eq 'NEW Taiwan'
|
|
133
|
-
expect(subject.iso_short_name).to eq 'NEW Taiwan'
|
|
134
|
-
expect(subject.translations).to eq('en' => 'NEW Taiwan',
|
|
135
|
-
'de' => 'NEW Taiwan')
|
|
136
|
-
expect(subject.subdivisions.keys).to eq(%w[CHA CYI])
|
|
137
|
-
expect(subject.subdivisions.values.map(&:name)).to eq(['New Changhua', 'New Municipality'])
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
after do
|
|
141
|
-
ISO3166.reset
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
describe 'hotloading data' do
|
|
146
|
-
before do
|
|
147
|
-
ISO3166::Data.register(
|
|
148
|
-
alpha2: 'LOL',
|
|
149
|
-
iso_short_name: 'Happy Country',
|
|
150
|
-
subdivisions: {
|
|
151
|
-
LOL1: { name: 'Happy sub1' },
|
|
152
|
-
LOL2: { name: 'Happy sub2' }
|
|
153
|
-
},
|
|
154
|
-
translations: {
|
|
155
|
-
'en' => 'Happy Country',
|
|
156
|
-
'de' => 'glückliches Land'
|
|
157
|
-
}
|
|
158
|
-
)
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
subject { ISO3166::Country.new('LOL') }
|
|
162
|
-
|
|
163
|
-
it 'can be done' do
|
|
164
|
-
data = ISO3166::Data.new('LOL').call
|
|
165
|
-
expect(data['iso_short_name']).to eq 'Happy Country'
|
|
166
|
-
expect(subject.iso_short_name).to eq 'Happy Country'
|
|
167
|
-
expect(subject.subdivisions.keys).to eq(%w[LOL1 LOL2])
|
|
168
|
-
expect(subject.subdivisions.values.map(&:name)).to eq(['Happy sub1', 'Happy sub2'])
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
it 'detect a stale cache' do
|
|
172
|
-
ISO3166::Data.register(alpha2: 'SAD', iso_short_name: 'Sad Country')
|
|
173
|
-
data = ISO3166::Data.new('SAD').call
|
|
174
|
-
expect(data['iso_short_name']).to eq 'Sad Country'
|
|
175
|
-
expect(ISO3166::Country.new('SAD').iso_short_name).to eq 'Sad Country'
|
|
176
|
-
ISO3166::Data.unregister('SAD')
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
it 'will not override custom translations' do
|
|
180
|
-
data = ISO3166::Data.new('LOL').call
|
|
181
|
-
expect(data['translations']).to eq('en' => 'Happy Country',
|
|
182
|
-
'de' => 'glückliches Land')
|
|
183
|
-
expect(subject.translations).to eq('en' => 'Happy Country',
|
|
184
|
-
'de' => 'glückliches Land')
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
it 'leaves remain countries intact after a hotload' do
|
|
188
|
-
data = ISO3166::Data.new('US').call
|
|
189
|
-
expect(data).to include('subregion')
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
it 'can be undone' do
|
|
193
|
-
ISO3166::Data.unregister('lol')
|
|
194
|
-
data = ISO3166::Data.new('LOL').call
|
|
195
|
-
expect(data).to eq nil
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
after do
|
|
199
|
-
ISO3166.reset
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
describe 'data checks' do
|
|
204
|
-
context 'subdivision YAML files' do
|
|
205
|
-
it 'has a non-blank code for all subdivisions' do
|
|
206
|
-
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
207
|
-
data = YAML.load_file(file)
|
|
208
|
-
expect(data.values.none? { |s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
|
|
209
|
-
end
|
|
210
|
-
end
|
|
211
|
-
|
|
212
|
-
it 'has a non-blank, lowercase and snake_case type for all subdivisions' do
|
|
213
|
-
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
214
|
-
data = YAML.load_file(file)
|
|
215
|
-
no_type = data.select { |_k, v| v['type'].nil? }
|
|
216
|
-
expect(no_type).to be_empty, "empty subdivision type in #{file} - #{no_type.keys}"
|
|
217
|
-
uppercase = data.select { |_k, v| v['type'] =~ /[A-Z]/ }
|
|
218
|
-
expect(uppercase).to be_empty, "uppercase characters in subdivision type in #{file} - #{uppercase.keys}"
|
|
219
|
-
spaces = data.select { |_k, v| v['type'] =~ /\s/ }
|
|
220
|
-
expect(spaces).to be_empty, "whitespace characters in subdivision type in #{file} - #{spaces.keys}"
|
|
221
|
-
end
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
it 'has a non-blank name for all subdivisions' do
|
|
225
|
-
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
226
|
-
data = YAML.load_file(file)
|
|
227
|
-
expect(data.values.none? { |s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
|
|
228
|
-
end
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
context 'cached country subdivision data' do
|
|
233
|
-
it 'has a non-blank code for all subdivisions' do
|
|
234
|
-
ISO3166::Country.all.each do |country|
|
|
235
|
-
expect(country.subdivisions.values.none? do |s|
|
|
236
|
-
s['code'].nil?
|
|
237
|
-
end).to be_truthy, "empty subdivision code in #{country}"
|
|
238
|
-
end
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
it 'has a non-blank name for all subdivisions' do
|
|
242
|
-
ISO3166::Country.all.each do |country|
|
|
243
|
-
expect(country.subdivisions.values.none? do |s|
|
|
244
|
-
s['name'].nil?
|
|
245
|
-
end).to be_truthy, "empty subdivision name in #{country}"
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
context 'names in Data' do
|
|
251
|
-
it 'should be unique (to allow .find_by_any_name work properly)' do
|
|
252
|
-
names = ISO3166::Data.cache.map do |_k, v|
|
|
253
|
-
[v['iso_short_name'], v['unofficial_names']].flatten.uniq
|
|
254
|
-
end.flatten
|
|
255
|
-
|
|
256
|
-
expect(names.size).to eq(names.uniq.size)
|
|
257
|
-
end
|
|
258
|
-
end
|
|
259
|
-
end
|
|
260
|
-
end
|
data/spec/mongoid_spec.rb
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
require File.expand_path('../lib/countries/mongoid', __dir__)
|
|
5
|
-
|
|
6
|
-
describe 'Mongoid support' do
|
|
7
|
-
let(:britain) { ISO3166::Country.new('GB') }
|
|
8
|
-
context 'instance methods' do
|
|
9
|
-
describe 'mongoize' do
|
|
10
|
-
it 'should delegate mongoization to the class method' do
|
|
11
|
-
expect(britain.mongoize).to eql ISO3166::Country.mongoize(britain)
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
context 'class methods' do
|
|
17
|
-
describe 'mongoize' do
|
|
18
|
-
it 'should store the alpha2 given a country object' do
|
|
19
|
-
expect(ISO3166::Country.mongoize(britain)).to eql britain.alpha2
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'should store the alpha2 given a valid alpha2' do
|
|
23
|
-
expect(ISO3166::Country.mongoize('GB')).to eql britain.alpha2
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'should store nil given an invalid object' do
|
|
27
|
-
bad_types = [[], Time.now.utc, {}, Date.new(2029, 10, 1)]
|
|
28
|
-
bad_types.each do |type|
|
|
29
|
-
expect(ISO3166::Country.mongoize(type)).to eql nil
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
it 'should store nil given an empty country object' do
|
|
34
|
-
expect(ISO3166::Country.mongoize(ISO3166::Country.new(''))).to eql nil
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
it 'should store nil given a bad alpha2' do
|
|
38
|
-
expect(ISO3166::Country.mongoize('bad_alpha_2')).to eql nil
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
describe 'demongoize' do
|
|
43
|
-
it 'should instantiate an equivalent object from stored alpha2 code' do
|
|
44
|
-
expect(ISO3166::Country.demongoize(britain.mongoize).data)
|
|
45
|
-
.to eql britain.data
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
it 'should be indifferent to storage by alpha2' do
|
|
49
|
-
expect(ISO3166::Country.demongoize(ISO3166::Country.mongoize('GB'))
|
|
50
|
-
.data).to eql britain.data
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
describe 'evolve' do
|
|
55
|
-
it 'should delegate to self.mongoize and return the mongoized object' do
|
|
56
|
-
expect(ISO3166::Country).to receive(:mongoize).with(britain)
|
|
57
|
-
ISO3166::Country.evolve(britain)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
data/spec/perf_spec.rb
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
ALL_LOCALES = %i[
|
|
6
|
-
af am ar as az be bg bn br bs ca cs cy da de
|
|
7
|
-
dz el en eo es et eu fa fi fo fr ga gl gu he
|
|
8
|
-
hi hr hu hy ia id is it ja ka kk km kn ko ku
|
|
9
|
-
lt lv mi mk ml mn mr ms mt nb ne nl nn oc or
|
|
10
|
-
pa pl ps pt ro ru rw si sk sl so sq sr sv sw
|
|
11
|
-
ta te th ti tk tl tr tt ug uk ve vi wa wo xh
|
|
12
|
-
zh zu
|
|
13
|
-
].freeze
|
|
14
|
-
|
|
15
|
-
describe ISO3166::Data, perf: true, order: :defined do
|
|
16
|
-
def perf_report(_name)
|
|
17
|
-
require 'benchmark'
|
|
18
|
-
require 'memory_profiler'
|
|
19
|
-
require 'ruby-prof'
|
|
20
|
-
# profile the code
|
|
21
|
-
RubyProf.start
|
|
22
|
-
|
|
23
|
-
100.times do
|
|
24
|
-
yield if block_given?
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
result = RubyProf.stop
|
|
28
|
-
|
|
29
|
-
# print a flat profile to text
|
|
30
|
-
printer = RubyProf::FlatPrinter.new(result)
|
|
31
|
-
printer.print($stdout)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
it 'responds to call' do
|
|
35
|
-
perf_report('translations') do
|
|
36
|
-
ISO3166.reset
|
|
37
|
-
data = ISO3166::Data.new('US').call
|
|
38
|
-
expect(data['translated_names']).to be_a Array
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it 'locales will load prior to return results' do
|
|
43
|
-
ISO3166.configuration.locales = %i[es de en]
|
|
44
|
-
report = MemoryProfiler.report do
|
|
45
|
-
ISO3166::Data.update_cache
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
report.pretty_print(to_file: 'tmp/3_locales.txt')
|
|
49
|
-
puts Benchmark.measure { ISO3166::Data.update_cache }
|
|
50
|
-
|
|
51
|
-
ISO3166.configure do |config|
|
|
52
|
-
config.locales = ALL_LOCALES
|
|
53
|
-
end
|
|
54
|
-
puts Benchmark.measure { ISO3166::Data.update_cache }
|
|
55
|
-
|
|
56
|
-
report = MemoryProfiler.report do
|
|
57
|
-
ISO3166::Data.update_cache
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
report.pretty_print(to_file: 'tmp/all_locales.txt')
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it 'loades a specfic country quickly' do
|
|
64
|
-
codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
|
|
65
|
-
Benchmark.bmbm do |bm|
|
|
66
|
-
bm.report('find_by_alpha2') do
|
|
67
|
-
codes.map { |cc| ISO3166::Country.find_country_by_alpha2 cc }
|
|
68
|
-
end
|
|
69
|
-
bm.report('new') do
|
|
70
|
-
codes.map { |cc| ISO3166::Country.new cc }
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
data/spec/spec_helper.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'countries'
|
|
4
|
-
require 'debug'
|
|
5
|
-
require 'simplecov'
|
|
6
|
-
SimpleCov.start
|
|
7
|
-
|
|
8
|
-
RSpec.configure do |config|
|
|
9
|
-
config.filter_run :focus
|
|
10
|
-
config.run_all_when_everything_filtered = true
|
|
11
|
-
config.filter_run_excluding perf: true
|
|
12
|
-
config.example_status_persistence_file_path = 'spec/examples.txt'
|
|
13
|
-
|
|
14
|
-
config.warnings = true
|
|
15
|
-
|
|
16
|
-
config.default_formatter = 'doc' if config.files_to_run.one?
|
|
17
|
-
# config.order = :random
|
|
18
|
-
# Kernel.srand config.seed
|
|
19
|
-
end
|
data/spec/subdivision_spec.rb
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'spec_helper'
|
|
4
|
-
|
|
5
|
-
describe ISO3166::Subdivision do
|
|
6
|
-
before do
|
|
7
|
-
ISO3166::Data.reset
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
let(:countries) { ISO3166::Country.all }
|
|
11
|
-
let(:available_types) { [Hash, NilClass] }
|
|
12
|
-
|
|
13
|
-
describe 'translations' do
|
|
14
|
-
it 'should be hash or nil' do
|
|
15
|
-
countries.each do |country|
|
|
16
|
-
country.subdivisions.each do |_, region|
|
|
17
|
-
expect(available_types).to include(region.translations.class)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
describe 'state codes' do
|
|
24
|
-
it 'should all be strings' do
|
|
25
|
-
countries.each do |country|
|
|
26
|
-
expect(country.subdivisions.keys).to(
|
|
27
|
-
all(be_a(String)),
|
|
28
|
-
"Expected #{country.alpha2.inspect} to have string subdivision \
|
|
29
|
-
codes but had #{country.subdivisions.keys.inspect}"
|
|
30
|
-
)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe 'code_with_translations' do
|
|
36
|
-
before { ISO3166.configuration.locales = %i[en pt] }
|
|
37
|
-
it 'returns a hash' do
|
|
38
|
-
expect(ISO3166::Country.new('IT').subdivisions['NA'].code_with_translations).to eq({ 'NA' => { 'en' => 'Naples',
|
|
39
|
-
'pt' => 'Nápoles' } })
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
data/spec/thread_safety_spec.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe 'Accessing ISO3166::Country instances data in multiple threads' do
|
|
4
|
-
before do
|
|
5
|
-
if Thread.respond_to?(:report_on_exception)
|
|
6
|
-
@report_on_exception_value = Thread.report_on_exception
|
|
7
|
-
Thread.report_on_exception = false
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
ISO3166::Data.reset
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def create_countries_threaded
|
|
14
|
-
nthreads = 100
|
|
15
|
-
threads = []
|
|
16
|
-
|
|
17
|
-
alpha2_codes = %w[us es nl ca de fr mx ru ch jp]
|
|
18
|
-
|
|
19
|
-
nthreads.times do
|
|
20
|
-
threads << Thread.new do
|
|
21
|
-
alpha2_codes.each do |a2|
|
|
22
|
-
country = ISO3166::Country[a2]
|
|
23
|
-
# This will fail if data['translations'] has been
|
|
24
|
-
# left nil due to a race condition
|
|
25
|
-
country.translation
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
threads.map(&:join)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
it "doesn't raise any exceptions when using a mutex" do
|
|
33
|
-
expect { create_countries_threaded }.to_not raise_error
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
it 'raises NoMethodError when not using a mutex' do
|
|
37
|
-
allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
|
|
38
|
-
|
|
39
|
-
expect { create_countries_threaded }.to raise_error(NoMethodError)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
after do
|
|
43
|
-
if Thread.respond_to?(:report_on_exception)
|
|
44
|
-
Thread.report_on_exception = @report_on_exception_value
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
data/spec/timezone_spec.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
describe 'timezone Country class' do
|
|
4
|
-
context "when loaded via 'timezone'" do
|
|
5
|
-
require 'tzinfo'
|
|
6
|
-
describe 'existence' do
|
|
7
|
-
subject { defined?(TZInfo) }
|
|
8
|
-
|
|
9
|
-
it { is_expected.to be_truthy }
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe 'GB' do
|
|
13
|
-
subject { ISO3166::Country.new('GB') }
|
|
14
|
-
it 'should return the tzinfo country object' do
|
|
15
|
-
expect(subject.timezones).to be_a(TZInfo::Country)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it 'should return the tzinfo country object' do
|
|
19
|
-
expect(subject.timezones.zone_info).to be_a(Array)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
it 'should return the tzinfo country object' do
|
|
23
|
-
expect(subject.timezones.zone_identifiers).to eq ['Europe/London']
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe 'US' do
|
|
28
|
-
subject { ISO3166::Country.new('US') }
|
|
29
|
-
it 'should return the tzinfo country object' do
|
|
30
|
-
expect(subject.timezones.zone_identifiers.size).to eq 29
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|