countries 1.2.5 → 2.0.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/CHANGELOG.md +6 -2
- data/Gemfile +1 -0
- data/README.markdown +33 -7
- data/Rakefile +15 -20
- data/countries.gemspec +1 -1
- data/lib/countries/cache/countries +0 -0
- data/lib/countries/cache/locales/af +0 -0
- data/lib/countries/cache/locales/am +0 -0
- data/lib/countries/cache/locales/ar +0 -0
- data/lib/countries/cache/locales/as +0 -0
- data/lib/countries/cache/locales/az +0 -0
- data/lib/countries/cache/locales/be +0 -0
- data/lib/countries/cache/locales/bg +0 -0
- data/lib/countries/cache/locales/bn +0 -0
- data/lib/countries/cache/locales/br +0 -0
- data/lib/countries/cache/locales/bs +0 -0
- data/lib/countries/cache/locales/ca +0 -0
- data/lib/countries/cache/locales/cs +0 -0
- data/lib/countries/cache/locales/cy +0 -0
- data/lib/countries/cache/locales/da +0 -0
- data/lib/countries/cache/locales/de +0 -0
- data/lib/countries/cache/locales/dz +0 -0
- data/lib/countries/cache/locales/el +0 -0
- data/lib/countries/cache/locales/en +0 -0
- data/lib/countries/cache/locales/eo +0 -0
- data/lib/countries/cache/locales/es +0 -0
- data/lib/countries/cache/locales/et +0 -0
- data/lib/countries/cache/locales/eu +0 -0
- data/lib/countries/cache/locales/fa +0 -0
- data/lib/countries/cache/locales/fi +0 -0
- data/lib/countries/cache/locales/fo +0 -0
- data/lib/countries/cache/locales/fr +0 -0
- data/lib/countries/cache/locales/ga +0 -0
- data/lib/countries/cache/locales/gl +0 -0
- data/lib/countries/cache/locales/gu +0 -0
- data/lib/countries/cache/locales/he +0 -0
- data/lib/countries/cache/locales/hi +0 -0
- data/lib/countries/cache/locales/hr +0 -0
- data/lib/countries/cache/locales/hu +0 -0
- data/lib/countries/cache/locales/hy +0 -0
- data/lib/countries/cache/locales/ia +0 -0
- data/lib/countries/cache/locales/id +0 -0
- data/lib/countries/cache/locales/is +0 -0
- data/lib/countries/cache/locales/it +0 -0
- data/lib/countries/cache/locales/ja +0 -0
- data/lib/countries/cache/locales/ka +0 -0
- data/lib/countries/cache/locales/kk +0 -0
- data/lib/countries/cache/locales/km +0 -0
- data/lib/countries/cache/locales/kn +0 -0
- data/lib/countries/cache/locales/ko +0 -0
- data/lib/countries/cache/locales/ku +0 -0
- data/lib/countries/cache/locales/lt +0 -0
- data/lib/countries/cache/locales/lv +0 -0
- data/lib/countries/cache/locales/mi +0 -0
- data/lib/countries/cache/locales/mk +0 -0
- data/lib/countries/cache/locales/ml +0 -0
- data/lib/countries/cache/locales/mn +0 -0
- data/lib/countries/cache/locales/mr +0 -0
- data/lib/countries/cache/locales/ms +0 -0
- data/lib/countries/cache/locales/mt +0 -0
- data/lib/countries/cache/locales/nb +0 -0
- data/lib/countries/cache/locales/ne +0 -0
- data/lib/countries/cache/locales/nl +0 -0
- data/lib/countries/cache/locales/nn +0 -0
- data/lib/countries/cache/locales/oc +0 -0
- data/lib/countries/cache/locales/or +0 -0
- data/lib/countries/cache/locales/pa +0 -0
- data/lib/countries/cache/locales/pl +0 -0
- data/lib/countries/cache/locales/ps +0 -0
- data/lib/countries/cache/locales/pt +0 -0
- data/lib/countries/cache/locales/ro +0 -0
- data/lib/countries/cache/locales/ru +0 -0
- data/lib/countries/cache/locales/rw +0 -0
- data/lib/countries/cache/locales/si +0 -0
- data/lib/countries/cache/locales/sk +0 -0
- data/lib/countries/cache/locales/sl +0 -0
- data/lib/countries/cache/locales/so +0 -0
- data/lib/countries/cache/locales/sq +0 -0
- data/lib/countries/cache/locales/sr +0 -0
- data/lib/countries/cache/locales/sv +0 -0
- data/lib/countries/cache/locales/sw +0 -0
- data/lib/countries/cache/locales/ta +0 -0
- data/lib/countries/cache/locales/te +0 -0
- data/lib/countries/cache/locales/th +0 -0
- data/lib/countries/cache/locales/ti +0 -0
- data/lib/countries/cache/locales/tk +0 -0
- data/lib/countries/cache/locales/tl +0 -0
- data/lib/countries/cache/locales/tr +0 -0
- data/lib/countries/cache/locales/tt +0 -0
- data/lib/countries/cache/locales/ug +0 -0
- data/lib/countries/cache/locales/uk +0 -0
- data/lib/countries/cache/locales/ve +0 -0
- data/lib/countries/cache/locales/vi +0 -0
- data/lib/countries/cache/locales/wa +0 -0
- data/lib/countries/cache/locales/wo +0 -0
- data/lib/countries/cache/locales/xh +0 -0
- data/lib/countries/cache/locales/zh +0 -0
- data/lib/countries/cache/locales/zu +0 -0
- data/lib/countries/configuration.rb +37 -0
- data/lib/countries/country.rb +115 -159
- data/lib/countries/country/attr_readers.rb +49 -0
- data/lib/countries/data.rb +76 -13
- data/lib/countries/iso3166.rb +4 -2
- data/lib/countries/setup.rb +7 -7
- data/lib/countries/timezones.rb +11 -0
- data/lib/countries/version.rb +1 -1
- data/spec/configuration_spec.rb +43 -0
- data/spec/country_spec.rb +22 -36
- data/spec/data_spec.rb +73 -0
- data/spec/global_spec.rb +29 -0
- data/spec/mongoid_spec.rb +1 -1
- data/spec/spec_helper.rb +24 -0
- data/spec/timezone_spec.rb +32 -0
- metadata +110 -9
- data/spec/setup_spec.rb +0 -14
@@ -0,0 +1,49 @@
|
|
1
|
+
module ISO3166
|
2
|
+
module Countries
|
3
|
+
module AttrReaders
|
4
|
+
AttrReaders = [
|
5
|
+
:number,
|
6
|
+
:alpha2,
|
7
|
+
:alpha3,
|
8
|
+
:name,
|
9
|
+
:names,
|
10
|
+
:latitude,
|
11
|
+
:longitude,
|
12
|
+
:continent,
|
13
|
+
:region,
|
14
|
+
:subregion,
|
15
|
+
:world_region,
|
16
|
+
:country_code,
|
17
|
+
:national_destination_code_lengths,
|
18
|
+
:national_number_lengths,
|
19
|
+
:international_prefix,
|
20
|
+
:national_prefix,
|
21
|
+
:address_format,
|
22
|
+
:translations,
|
23
|
+
:translated_names,
|
24
|
+
:ioc,
|
25
|
+
:gec,
|
26
|
+
:un_locode,
|
27
|
+
:languages,
|
28
|
+
:nationality,
|
29
|
+
:dissolved_on,
|
30
|
+
:eu_member,
|
31
|
+
:alt_currency,
|
32
|
+
:vat_rates,
|
33
|
+
:postal_code,
|
34
|
+
:min_longitude,
|
35
|
+
:min_latitude,
|
36
|
+
:max_longitude,
|
37
|
+
:max_latitude,
|
38
|
+
:latitude_dec,
|
39
|
+
:longitude_dec
|
40
|
+
]
|
41
|
+
|
42
|
+
AttrReaders.each do |meth|
|
43
|
+
define_method meth do
|
44
|
+
@data[meth.to_s]
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/countries/data.rb
CHANGED
@@ -4,30 +4,93 @@ module ISO3166
|
|
4
4
|
class Data
|
5
5
|
@@cache = nil
|
6
6
|
def initialize(alpha2)
|
7
|
+
self.class.update_cache
|
7
8
|
@alpha2 = alpha2.to_s.upcase
|
8
|
-
Data.load_cache unless @@cache
|
9
9
|
end
|
10
10
|
|
11
11
|
def call
|
12
12
|
@@cache[@alpha2]
|
13
13
|
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
class << self
|
16
|
+
def cache
|
17
|
+
update_cache
|
18
|
+
end
|
18
19
|
|
19
|
-
|
20
|
+
def reset
|
21
|
+
@@cache = nil
|
22
|
+
@@codes = nil
|
23
|
+
end
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
25
|
+
def codes
|
26
|
+
@@codes ||= load_yaml(['data', 'countries.yaml']).freeze
|
27
|
+
end
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
|
29
|
+
def update_cache
|
30
|
+
return @@cache unless cache_flush_required?
|
31
|
+
@@cache ||= marshal %w(cache countries )
|
32
|
+
|
33
|
+
locales_to_remove.each do |locale|
|
34
|
+
unload_translations(locale)
|
35
|
+
end
|
36
|
+
|
37
|
+
locales_to_load.each do |locale|
|
38
|
+
load_translations(locale)
|
39
|
+
end
|
40
|
+
|
41
|
+
@@cache.freeze
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
def cache_flush_required?
|
46
|
+
locales_to_load.size && locales_to_remove.size
|
47
|
+
end
|
48
|
+
|
49
|
+
def locales_to_load
|
50
|
+
requested_locales - loaded_locales
|
51
|
+
end
|
52
|
+
|
53
|
+
def locales_to_remove
|
54
|
+
loaded_locales - requested_locales
|
55
|
+
end
|
56
|
+
|
57
|
+
def requested_locales
|
58
|
+
ISO3166.configuration.locales.map { |l| l.to_s.downcase }
|
59
|
+
end
|
60
|
+
|
61
|
+
def loaded_locales
|
62
|
+
ISO3166.configuration.loaded_locales.map { |l| l.to_s.downcase }
|
63
|
+
end
|
64
|
+
|
65
|
+
def load_translations(locale)
|
66
|
+
locale_names = marshal(['cache', 'locales', locale])
|
67
|
+
codes.each do |alpha2|
|
68
|
+
@@cache[alpha2]['translations'] ||= {}
|
69
|
+
@@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
|
70
|
+
@@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
|
71
|
+
end
|
72
|
+
ISO3166.configuration.loaded_locales << locale
|
73
|
+
end
|
74
|
+
|
75
|
+
def unload_translations(locale)
|
76
|
+
codes.each do |alpha2|
|
77
|
+
@@cache[alpha2]['translations'].delete(locale)
|
78
|
+
@@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
|
79
|
+
end
|
80
|
+
ISO3166.configuration.loaded_locales.delete(locale)
|
81
|
+
end
|
82
|
+
|
83
|
+
def marshal(file_array)
|
84
|
+
Marshal.load(File.binread(datafile_path file_array))
|
85
|
+
end
|
86
|
+
|
87
|
+
def datafile_path(file_array)
|
88
|
+
File.join([File.dirname(__FILE__)] + file_array)
|
89
|
+
end
|
28
90
|
|
29
|
-
|
30
|
-
|
91
|
+
def load_yaml(file_array)
|
92
|
+
YAML.load_file(datafile_path(file_array))
|
93
|
+
end
|
31
94
|
end
|
32
95
|
end
|
33
96
|
end
|
data/lib/countries/iso3166.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'yaml'
|
2
|
-
require 'iso4217'
|
3
2
|
require 'i18n_data'
|
3
|
+
require 'money'
|
4
4
|
|
5
|
-
require 'countries/
|
5
|
+
require 'countries/configuration'
|
6
6
|
require 'countries/data'
|
7
|
+
require 'countries/country/attr_readers'
|
7
8
|
require 'countries/country'
|
9
|
+
require 'countries/timezones'
|
data/lib/countries/setup.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
module ISO3166
|
2
2
|
##
|
3
|
+
# <b>DEPRECATED:</b> Please use <tt>Data</tt> instead.
|
4
|
+
# TODO: Remove at version 2.1
|
3
5
|
# Handles building the in memory store of countries data
|
4
6
|
class Setup
|
7
|
+
# <b>DEPRECATED:</b> Please use <tt>Data.codes</tt> instead.
|
5
8
|
def codes
|
6
|
-
|
9
|
+
warn "[DEPRECATION] `Setup.codes` is deprecated. Please use `Data.codes` instead."
|
10
|
+
Data.codes
|
7
11
|
end
|
8
12
|
|
9
13
|
def data
|
10
|
-
|
11
|
-
|
12
|
-
codes.each do |alpha2|
|
13
|
-
@data[alpha2] = Data.new(alpha2).call
|
14
|
-
end
|
15
|
-
@data.freeze
|
14
|
+
warn "[DEPRECATION] `Setup.new.data` is deprecated without replacement
|
15
|
+
data is now loaded per locale Data.new(:en).call"
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Extend Country class with support for timezones
|
2
|
+
module ISO3166
|
3
|
+
# Extend Country class with support for timezones
|
4
|
+
module TimezoneExtensions
|
5
|
+
def timezones
|
6
|
+
@tz_country ||= TZInfo::Country.get(alpha2)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
ISO3166::Country.send(:include, ISO3166::TimezoneExtensions)
|
data/lib/countries/version.rb
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe 'ISO3166.configuration' do
|
5
|
+
it 'has a configuration' do
|
6
|
+
expect(ISO3166.configuration).to be_a ISO3166::Configuration
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'locales can be changed' do
|
10
|
+
ISO3166.configuration.locales = [:es]
|
11
|
+
expect(ISO3166.configuration.locales).to eq [:es]
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'locales are assumed from I18n.available_locales' do
|
15
|
+
I18n.available_locales = [:de, :en]
|
16
|
+
ISO3166.reset
|
17
|
+
expect(ISO3166::Country.new('DE').translation(:de)).to eq 'Deutschland'
|
18
|
+
expect(ISO3166::Country.new('DE').translation(:es)).to eq nil
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'locales can be changed' do
|
22
|
+
ISO3166.configuration.locales = [:de]
|
23
|
+
expect(ISO3166::Country.new('DE').translation(:de)).to eq 'Deutschland'
|
24
|
+
expect(ISO3166::Country.new('DE').translation(:es)).to eq nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'locales can be changed' do
|
28
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
29
|
+
expect(ISO3166::Country.new('DE').translation(:es)).to eq 'Alemania'
|
30
|
+
expect(ISO3166::Country.new('DE').translation(:en)).to eq 'Germany'
|
31
|
+
expect(ISO3166::Country.new('DE').translation(:de)).to eq 'Deutschland'
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'locales can be changed with a block' do
|
35
|
+
ISO3166.configure do |config|
|
36
|
+
config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
|
37
|
+
end
|
38
|
+
|
39
|
+
expect(ISO3166::Country.new('DE').translations.size).to eq 92
|
40
|
+
|
41
|
+
expect(ISO3166.configuration.loaded_locales.size).to eq 92
|
42
|
+
end
|
43
|
+
end
|
data/spec/country_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'spec_helper'
|
4
4
|
|
5
5
|
describe ISO3166::Country do
|
6
6
|
let(:country) { ISO3166::Country.search('US') }
|
@@ -244,10 +244,21 @@ describe ISO3166::Country do
|
|
244
244
|
expect(countries.first[0]).to eq('Afghanistan')
|
245
245
|
expect(countries.size).to eq(250)
|
246
246
|
end
|
247
|
+
|
248
|
+
it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
|
249
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
250
|
+
|
251
|
+
countries = ISO3166::Country.all_names_with_codes(:es)
|
252
|
+
expect(countries).to be_an(Array)
|
253
|
+
expect(countries.first[0]).to be_a(String)
|
254
|
+
expect(countries.first[0]).to eq('Afganistán')
|
255
|
+
expect(countries.size).to eq(250)
|
256
|
+
end
|
247
257
|
end
|
248
258
|
|
249
259
|
describe 'translation' do
|
250
260
|
it 'should return the localized name for a country to the selected locale' do
|
261
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
251
262
|
countries = ISO3166::Country.new(:de).translation('de')
|
252
263
|
expect(countries).to be_an(String)
|
253
264
|
expect(countries).to eq('Deutschland')
|
@@ -311,41 +322,11 @@ describe ISO3166::Country do
|
|
311
322
|
|
312
323
|
describe 'currency' do
|
313
324
|
it 'should return an instance of Currency' do
|
314
|
-
expect(country.currency).to be_a(
|
325
|
+
expect(country.currency).to be_a(Money::Currency)
|
315
326
|
end
|
316
327
|
|
317
328
|
it 'should allow access to symbol' do
|
318
|
-
expect(country.currency
|
319
|
-
end
|
320
|
-
end
|
321
|
-
|
322
|
-
describe 'Country class' do
|
323
|
-
context "when loaded via 'iso3166' existance" do
|
324
|
-
subject { defined?(Country) }
|
325
|
-
|
326
|
-
it { is_expected.to be_falsey }
|
327
|
-
end
|
328
|
-
|
329
|
-
context "when loaded via 'global'" do
|
330
|
-
before { require 'countries/global' }
|
331
|
-
|
332
|
-
describe 'existance' do
|
333
|
-
subject { defined?(Country) }
|
334
|
-
|
335
|
-
it { is_expected.to be_truthy }
|
336
|
-
end
|
337
|
-
|
338
|
-
describe 'superclass' do
|
339
|
-
subject { Country.superclass }
|
340
|
-
|
341
|
-
it { is_expected.to eq(ISO3166::Country) }
|
342
|
-
end
|
343
|
-
|
344
|
-
describe 'to_s' do
|
345
|
-
it 'should return the country name' do
|
346
|
-
expect(Country.new('GB').to_s).to eq('United Kingdom')
|
347
|
-
end
|
348
|
-
end
|
329
|
+
expect(country.currency.symbol).to eq('$')
|
349
330
|
end
|
350
331
|
end
|
351
332
|
|
@@ -467,6 +448,11 @@ describe ISO3166::Country do
|
|
467
448
|
end
|
468
449
|
|
469
450
|
context 'when search translation found' do
|
451
|
+
before do
|
452
|
+
ISO3166.configure do |config|
|
453
|
+
config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
|
454
|
+
end
|
455
|
+
end
|
470
456
|
let(:uk) { ISO3166::Country.find_country_by_translated_names('Velika Britanija') }
|
471
457
|
|
472
458
|
it 'should be a country instance' do
|
@@ -556,7 +542,7 @@ describe ISO3166::Country do
|
|
556
542
|
|
557
543
|
describe 'names in Data' do
|
558
544
|
it 'should be unique (to allow .find_by_name work properly)' do
|
559
|
-
names = ISO3166::
|
545
|
+
names = ISO3166::Data.cache.map do |_k, v|
|
560
546
|
[v['name'], v['names']].flatten.uniq
|
561
547
|
end.flatten
|
562
548
|
|
@@ -568,7 +554,7 @@ describe ISO3166::Country do
|
|
568
554
|
let(:norway) { ISO3166::Country.search('NO') }
|
569
555
|
|
570
556
|
it 'should have a currency' do
|
571
|
-
expect(norway.currency).to be_a(
|
557
|
+
expect(norway.currency).to be_a(Money::Currency)
|
572
558
|
end
|
573
559
|
end
|
574
560
|
|
@@ -576,7 +562,7 @@ describe ISO3166::Country do
|
|
576
562
|
let(:guernsey) { ISO3166::Country.search('GG') }
|
577
563
|
|
578
564
|
it 'should have a currency' do
|
579
|
-
expect(guernsey.currency.
|
565
|
+
expect(guernsey.currency.iso_code).to eq('GBP')
|
580
566
|
end
|
581
567
|
end
|
582
568
|
|
data/spec/data_spec.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'benchmark'
|
4
|
+
|
5
|
+
describe ISO3166::Data do
|
6
|
+
it 'responds to call' do
|
7
|
+
data = ISO3166::Data.new('US').call
|
8
|
+
expect(data['translated_names']).to be_a Array
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can load selective locales' do
|
12
|
+
# ISO3166::Data.update_cache
|
13
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
14
|
+
data = ISO3166::Data.new('US').call
|
15
|
+
expect(data['translated_names'].size).to eq (3)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can load selective locales and reload efficiently' do
|
19
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
20
|
+
data = ISO3166::Data.new('US').call
|
21
|
+
expect(data['translations']).to eq({"de"=>"Vereinigte Staaten", "es"=>"Estados Unidos", "en"=>"United States"})
|
22
|
+
expect(data['translated_names'].sort).to eq ["Vereinigte Staaten", "Estados Unidos", "United States"].sort
|
23
|
+
ISO3166.configuration.locales = [:en]
|
24
|
+
data = ISO3166::Data.new('US').call
|
25
|
+
expect(data['translated_names'].size).to eq (1)
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'locales will load prior to return results' do
|
29
|
+
# require 'memory_profiler'
|
30
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
31
|
+
# report = MemoryProfiler.report do
|
32
|
+
ISO3166::Data.update_cache
|
33
|
+
# end
|
34
|
+
|
35
|
+
# report.pretty_print(to_file: 'tmp/memory/3_locales')
|
36
|
+
ISO3166::Data.update_cache
|
37
|
+
|
38
|
+
ISO3166.configure do |config|
|
39
|
+
config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
|
40
|
+
end
|
41
|
+
# puts Benchmark.measure {ISO3166::Data.update_cache}
|
42
|
+
|
43
|
+
# report = MemoryProfiler.report do
|
44
|
+
ISO3166::Data.update_cache
|
45
|
+
# end
|
46
|
+
|
47
|
+
# report.pretty_print(to_file: 'tmp/memory/all_locales')
|
48
|
+
|
49
|
+
expect(ISO3166::Country.new('DE').translations.size).to eq 92
|
50
|
+
|
51
|
+
expect(ISO3166.configuration.loaded_locales.size).to eq 92
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'locales will load prior and be cached' do
|
55
|
+
ISO3166.reset
|
56
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
57
|
+
expect(ISO3166::Data.send(:locales_to_load) ).to eql(['es', 'de', 'en'])
|
58
|
+
ISO3166::Data.update_cache
|
59
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
60
|
+
expect(ISO3166::Data.send(:locales_to_load) ).to eql([])
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'locales will load prior and be cached' do
|
64
|
+
ISO3166.reset
|
65
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
66
|
+
expect(ISO3166::Data.send(:locales_to_remove) ).to eql([])
|
67
|
+
expect(ISO3166::Country.new('DE').translation('de')).to eq 'Deutschland'
|
68
|
+
ISO3166::Data.update_cache
|
69
|
+
ISO3166.configuration.locales = [:es, :en]
|
70
|
+
expect(ISO3166::Data.send(:locales_to_remove) ).to eql(['de'])
|
71
|
+
expect(ISO3166::Country.new('DE').translation('de')).to eq nil
|
72
|
+
end
|
73
|
+
end
|
data/spec/global_spec.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
describe 'global Country class' do
|
2
|
+
context "when loaded via 'iso3166' existance" do
|
3
|
+
subject { defined?(Country) }
|
4
|
+
|
5
|
+
it { is_expected.to be_falsey }
|
6
|
+
end
|
7
|
+
|
8
|
+
context "when loaded via 'global'" do
|
9
|
+
before { require 'countries/global' }
|
10
|
+
|
11
|
+
describe 'existance' do
|
12
|
+
subject { defined?(Country) }
|
13
|
+
|
14
|
+
it { is_expected.to be_truthy }
|
15
|
+
end
|
16
|
+
|
17
|
+
describe 'superclass' do
|
18
|
+
subject { Country.superclass }
|
19
|
+
|
20
|
+
it { is_expected.to eq(ISO3166::Country) }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'to_s' do
|
24
|
+
it 'should return the country name' do
|
25
|
+
expect(Country.new('GB').to_s).to eq('United Kingdom')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|