feat(api_geo): add api_geo service
This commit is contained in:
parent
69f964e4a3
commit
4d4c378724
7 changed files with 880 additions and 36 deletions
|
@ -1,20 +0,0 @@
|
||||||
class API::PaysController < ApplicationController
|
|
||||||
before_action :authenticate_logged_user!
|
|
||||||
|
|
||||||
def index
|
|
||||||
countries = CountriesService.get('FR').zip(CountriesService.get(I18n.locale))
|
|
||||||
countries = countries.map do |(code, value_fr), (localized_code, localized_value)|
|
|
||||||
if code != localized_code
|
|
||||||
raise "Countries lists mismatch. It means i18n_data gem has some internal inconsistencies."
|
|
||||||
end
|
|
||||||
|
|
||||||
{
|
|
||||||
code: code,
|
|
||||||
value: value_fr,
|
|
||||||
label: localized_value
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
render json: countries
|
|
||||||
end
|
|
||||||
end
|
|
77
app/services/api_geo_service.rb
Normal file
77
app/services/api_geo_service.rb
Normal file
|
@ -0,0 +1,77 @@
|
||||||
|
class APIGeoService
|
||||||
|
class << self
|
||||||
|
def countries(locale: I18n.locale)
|
||||||
|
I18nData.countries(locale)
|
||||||
|
.merge(get_localized_additional_countries(locale))
|
||||||
|
.map { |(code, name)| { name:, code: } }
|
||||||
|
.sort_by { I18n.transliterate(_1[:name]) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def country_name(code, locale: I18n.locale)
|
||||||
|
countries(locale:).find { _1[:code] == code }&.dig(:name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def country_code(name)
|
||||||
|
return if name.nil?
|
||||||
|
code = I18nData.country_code(name) || I18nData.country_code(name.humanize) || I18nData.country_code(name.titleize)
|
||||||
|
if code.nil?
|
||||||
|
countries_index_fr[I18n.transliterate(name).upcase]&.dig(:code)
|
||||||
|
else
|
||||||
|
code
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def regions
|
||||||
|
get_from_api_geo(:regions).sort_by { I18n.transliterate(_1[:name]) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def region_name(code)
|
||||||
|
regions.find { _1[:code] == code }&.dig(:name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def region_code(name)
|
||||||
|
return if name.nil?
|
||||||
|
regions.find { _1[:name] == name }&.dig(:code)
|
||||||
|
end
|
||||||
|
|
||||||
|
def departements
|
||||||
|
[{ code: '99', name: 'Etranger' }] + get_from_api_geo(:departements).sort_by { _1[:code] }
|
||||||
|
end
|
||||||
|
|
||||||
|
def departement_name(code)
|
||||||
|
departements.find { _1[:code] == code }&.dig(:name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def departement_code(name)
|
||||||
|
return if name.nil?
|
||||||
|
departements.find { _1[:name] == name }&.dig(:code)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def get_from_api_geo(scope)
|
||||||
|
Rails.cache.fetch("api_geo_#{scope}", expires_in: 1.year) do
|
||||||
|
response = Typhoeus.get("#{API_GEO_URL}/#{scope}")
|
||||||
|
JSON.parse(response.body).map(&:symbolize_keys)
|
||||||
|
.map { { name: _1[:nom].tr("'", '’'), code: _1[:code] } }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def countries_index_fr
|
||||||
|
Rails.cache.fetch('countries_index_fr', expires_in: 1.year) do
|
||||||
|
countries(locale: 'FR').index_by { I18n.transliterate(_1[:name]).upcase }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_localized_additional_countries(locale)
|
||||||
|
additional_countries[locale.to_s.upcase] || {}
|
||||||
|
end
|
||||||
|
|
||||||
|
def additional_countries
|
||||||
|
{
|
||||||
|
'FR' => { 'XK' => 'Kosovo' },
|
||||||
|
'EN' => { 'XK' => 'Kosovo' }
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -1,16 +0,0 @@
|
||||||
class CountriesService
|
|
||||||
def self.get(locale)
|
|
||||||
I18nData.countries(locale).merge(get_localized_additional_countries(locale))
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.get_localized_additional_countries(locale)
|
|
||||||
additional_countries[locale.to_s.upcase] || {}
|
|
||||||
end
|
|
||||||
|
|
||||||
def self.additional_countries
|
|
||||||
{
|
|
||||||
'FR' => { 'XK' => 'Kosovo' },
|
|
||||||
'EN' => { 'XK' => 'Kosovo' }
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
41
spec/fixtures/cassettes/api_geo_departements.yml
vendored
Normal file
41
spec/fixtures/cassettes/api_geo_departements.yml
vendored
Normal file
File diff suppressed because one or more lines are too long
41
spec/fixtures/cassettes/api_geo_regions.yml
vendored
Normal file
41
spec/fixtures/cassettes/api_geo_regions.yml
vendored
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
---
|
||||||
|
http_interactions:
|
||||||
|
- request:
|
||||||
|
method: get
|
||||||
|
uri: https://geo.api.gouv.fr/regions
|
||||||
|
body:
|
||||||
|
encoding: US-ASCII
|
||||||
|
string: ''
|
||||||
|
headers:
|
||||||
|
User-Agent:
|
||||||
|
- demarches-simplifiees.fr
|
||||||
|
Expect:
|
||||||
|
- ''
|
||||||
|
response:
|
||||||
|
status:
|
||||||
|
code: 200
|
||||||
|
message: ''
|
||||||
|
headers:
|
||||||
|
Server:
|
||||||
|
- nginx/1.10.3 (Ubuntu)
|
||||||
|
Date:
|
||||||
|
- Tue, 20 Dec 2022 11:55:45 GMT
|
||||||
|
Content-Type:
|
||||||
|
- application/json; charset=utf-8
|
||||||
|
Content-Length:
|
||||||
|
- '653'
|
||||||
|
Vary:
|
||||||
|
- Accept-Encoding
|
||||||
|
- Origin
|
||||||
|
X-Powered-By:
|
||||||
|
- Express
|
||||||
|
Etag:
|
||||||
|
- W/"28d-NqjRJu+ph9X/ycpx3D2pjeoeVto"
|
||||||
|
Strict-Transport-Security:
|
||||||
|
- max-age=15552000
|
||||||
|
body:
|
||||||
|
encoding: ASCII-8BIT
|
||||||
|
string: !binary |-
|
||||||
|
W3sibm9tIjoiw45sZS1kZS1GcmFuY2UiLCJjb2RlIjoiMTEifSx7Im5vbSI6IkNlbnRyZS1WYWwgZGUgTG9pcmUiLCJjb2RlIjoiMjQifSx7Im5vbSI6IkJvdXJnb2duZS1GcmFuY2hlLUNvbXTDqSIsImNvZGUiOiIyNyJ9LHsibm9tIjoiTm9ybWFuZGllIiwiY29kZSI6IjI4In0seyJub20iOiJIYXV0cy1kZS1GcmFuY2UiLCJjb2RlIjoiMzIifSx7Im5vbSI6IkdyYW5kIEVzdCIsImNvZGUiOiI0NCJ9LHsibm9tIjoiUGF5cyBkZSBsYSBMb2lyZSIsImNvZGUiOiI1MiJ9LHsibm9tIjoiQnJldGFnbmUiLCJjb2RlIjoiNTMifSx7Im5vbSI6Ik5vdXZlbGxlLUFxdWl0YWluZSIsImNvZGUiOiI3NSJ9LHsibm9tIjoiT2NjaXRhbmllIiwiY29kZSI6Ijc2In0seyJub20iOiJBdXZlcmduZS1SaMO0bmUtQWxwZXMiLCJjb2RlIjoiODQifSx7Im5vbSI6IlByb3ZlbmNlLUFscGVzLUPDtHRlIGQnQXp1ciIsImNvZGUiOiI5MyJ9LHsibm9tIjoiQ29yc2UiLCJjb2RlIjoiOTQifSx7Im5vbSI6Ikd1YWRlbG91cGUiLCJjb2RlIjoiMDEifSx7Im5vbSI6Ik1hcnRpbmlxdWUiLCJjb2RlIjoiMDIifSx7Im5vbSI6Ikd1eWFuZSIsImNvZGUiOiIwMyJ9LHsibm9tIjoiTGEgUsOpdW5pb24iLCJjb2RlIjoiMDQifSx7Im5vbSI6Ik1heW90dGUiLCJjb2RlIjoiMDYifV0=
|
||||||
|
recorded_at: Tue, 20 Dec 2022 11:55:45 GMT
|
||||||
|
recorded_with: VCR 6.1.0
|
676
spec/fixtures/files/pays_dump.json
vendored
Normal file
676
spec/fixtures/files/pays_dump.json
vendored
Normal file
|
@ -0,0 +1,676 @@
|
||||||
|
[
|
||||||
|
"ACORES, MADERE",
|
||||||
|
"Afghanistan",
|
||||||
|
"AFGHANISTAN",
|
||||||
|
"Afrique du Sud",
|
||||||
|
"AFRIQUE DU SUD",
|
||||||
|
"Åland, Îles",
|
||||||
|
"ALASKA",
|
||||||
|
"Albania",
|
||||||
|
"Albanie",
|
||||||
|
"ALBANIE",
|
||||||
|
"Algeria",
|
||||||
|
"ALGERIE",
|
||||||
|
"Algérie",
|
||||||
|
"Allemagne",
|
||||||
|
"ALLEMAGNE",
|
||||||
|
"American Samoa",
|
||||||
|
"Andorra",
|
||||||
|
"Andorre",
|
||||||
|
"ANDORRE",
|
||||||
|
"Angola",
|
||||||
|
"ANGOLA",
|
||||||
|
"Anguilla",
|
||||||
|
"ANGUILLA",
|
||||||
|
"Antarctique",
|
||||||
|
"Antigua and Barbuda",
|
||||||
|
"Antigua-et-Barbuda",
|
||||||
|
"ANTIGUA-ET-BARBUDA",
|
||||||
|
"ANTILLES NEERLANDAISES",
|
||||||
|
"Arabie saoudite",
|
||||||
|
"ARABIE SAOUDITE",
|
||||||
|
"Argentina",
|
||||||
|
"Argentine",
|
||||||
|
"ARGENTINE",
|
||||||
|
"Armenia",
|
||||||
|
"ARMENIE",
|
||||||
|
"Arménie",
|
||||||
|
"Aruba",
|
||||||
|
"ARUBA",
|
||||||
|
"Australia",
|
||||||
|
"Australie",
|
||||||
|
"AUSTRALIE",
|
||||||
|
"Austria",
|
||||||
|
"Autriche",
|
||||||
|
"AUTRICHE",
|
||||||
|
"AZERBAIDJAN",
|
||||||
|
"Azerbaïdjan",
|
||||||
|
"Azerbaijan",
|
||||||
|
"Bahamas",
|
||||||
|
"BAHAMAS",
|
||||||
|
"Bahrain",
|
||||||
|
"BAHREIN",
|
||||||
|
"Bahreïn",
|
||||||
|
"Bangladesh",
|
||||||
|
"BANGLADESH",
|
||||||
|
"Barbade",
|
||||||
|
"BARBADE",
|
||||||
|
"Barbados",
|
||||||
|
"Belarus",
|
||||||
|
"Bélarus",
|
||||||
|
"Belgique",
|
||||||
|
"BELGIQUE",
|
||||||
|
"Belgium",
|
||||||
|
"Belize",
|
||||||
|
"BELIZE",
|
||||||
|
"Benin",
|
||||||
|
"BENIN",
|
||||||
|
"Bénin",
|
||||||
|
"Bermuda",
|
||||||
|
"Bermudes",
|
||||||
|
"BERMUDES",
|
||||||
|
"Bhoutan",
|
||||||
|
"BHOUTAN",
|
||||||
|
"Bhutan",
|
||||||
|
"BIELORUSSIE",
|
||||||
|
"Birmanie",
|
||||||
|
"BIRMANIE",
|
||||||
|
"Bolivia",
|
||||||
|
"Bolivie",
|
||||||
|
"BOLIVIE",
|
||||||
|
"BONAIRE, SAINT EUSTACHE ET SABA",
|
||||||
|
"Bonaire, Saint-Eustache et Saba",
|
||||||
|
"Bonaire, Sint Eustatius and Saba",
|
||||||
|
"Bosnia and Herzegovina",
|
||||||
|
"BOSNIE-HERZEGOVINE",
|
||||||
|
"Bosnie-Herzégovine",
|
||||||
|
"Botswana",
|
||||||
|
"BOTSWANA",
|
||||||
|
"Brazil",
|
||||||
|
"BRESIL",
|
||||||
|
"Brésil",
|
||||||
|
"British Indian Ocean Territory",
|
||||||
|
"Brunei Darussalam",
|
||||||
|
"Brunéi Darussalam",
|
||||||
|
"BRUNEI",
|
||||||
|
"Bulgaria",
|
||||||
|
"Bulgarie",
|
||||||
|
"BULGARIE",
|
||||||
|
"Burkina Faso",
|
||||||
|
"BURKINA",
|
||||||
|
"Burundi",
|
||||||
|
"BURUNDI",
|
||||||
|
"Cabo Verde",
|
||||||
|
"CAIMANES (ILES)",
|
||||||
|
"Cambodge",
|
||||||
|
"CAMBODGE",
|
||||||
|
"Cambodia",
|
||||||
|
"Cameroon",
|
||||||
|
"CAMEROUN ET TOGO",
|
||||||
|
"Cameroun",
|
||||||
|
"CAMEROUN",
|
||||||
|
"Canada",
|
||||||
|
"CANADA",
|
||||||
|
"CANARIES (ILES)",
|
||||||
|
"Cap-Vert",
|
||||||
|
"CAP-VERT",
|
||||||
|
"Cayman Islands",
|
||||||
|
"CENTRAFRICAINE (REPUBLIQUE)",
|
||||||
|
"Central African Republic",
|
||||||
|
"Chad",
|
||||||
|
"Chile",
|
||||||
|
"Chili",
|
||||||
|
"CHILI",
|
||||||
|
"China",
|
||||||
|
"Chine",
|
||||||
|
"CHINE",
|
||||||
|
"CHRISTMAS (ILE)",
|
||||||
|
"Christmas, Île",
|
||||||
|
"Chypre",
|
||||||
|
"CHYPRE",
|
||||||
|
"Cocos (Keeling) Islands",
|
||||||
|
"Cocos (Keeling), Îles",
|
||||||
|
"Colombia",
|
||||||
|
"Colombie",
|
||||||
|
"COLOMBIE",
|
||||||
|
"Comores",
|
||||||
|
"COMORES",
|
||||||
|
"Comoros",
|
||||||
|
"CONGO (REPUBLIQUE DEMOCRATIQUE)",
|
||||||
|
"Congo, The Democratic Republic of the",
|
||||||
|
"Congo",
|
||||||
|
"CONGO",
|
||||||
|
"COOK (ILES)",
|
||||||
|
"COREE (REPUBLIQUE DE)",
|
||||||
|
"COREE (REPUBLIQUE POPULAIRE DEMOCRATIQUE DE)",
|
||||||
|
"Corée, République de",
|
||||||
|
"Corée, République populaire démocratique de",
|
||||||
|
"COREE",
|
||||||
|
"Costa Rica",
|
||||||
|
"COSTA RICA",
|
||||||
|
"COTE D'IVOIRE",
|
||||||
|
"Côte d'Ivoire",
|
||||||
|
"Croatia",
|
||||||
|
"Croatie",
|
||||||
|
"CROATIE",
|
||||||
|
"Cuba",
|
||||||
|
"CUBA",
|
||||||
|
"Curaçao",
|
||||||
|
"CURAÇAO",
|
||||||
|
"Cyprus",
|
||||||
|
"Czechia",
|
||||||
|
"Danemark",
|
||||||
|
"DANEMARK",
|
||||||
|
"Denmark",
|
||||||
|
"Djibouti",
|
||||||
|
"DJIBOUTI",
|
||||||
|
"Dominica",
|
||||||
|
"DOMINICAINE (REPUBLIQUE)",
|
||||||
|
"Dominican Republic",
|
||||||
|
"Dominique",
|
||||||
|
"DOMINIQUE",
|
||||||
|
"Ecuador",
|
||||||
|
"Egypt",
|
||||||
|
"EGYPTE",
|
||||||
|
"Égypte",
|
||||||
|
"El Salvador",
|
||||||
|
"EL SALVADOR",
|
||||||
|
"EMIRATS ARABES UNIS",
|
||||||
|
"Émirats arabes unis",
|
||||||
|
"EQUATEUR",
|
||||||
|
"Équateur",
|
||||||
|
"Equatorial Guinea",
|
||||||
|
"Eritrea",
|
||||||
|
"ERYTHREE",
|
||||||
|
"Érythrée",
|
||||||
|
"Espagne",
|
||||||
|
"ESPAGNE",
|
||||||
|
"Estonia",
|
||||||
|
"Estonie",
|
||||||
|
"ESTONIE",
|
||||||
|
"Eswatini",
|
||||||
|
"ETATS MALAIS NON FEDERES",
|
||||||
|
"ETATS-UNIS",
|
||||||
|
"États-Unis",
|
||||||
|
"Ethiopia",
|
||||||
|
"ETHIOPIE",
|
||||||
|
"Éthiopie",
|
||||||
|
"Falkland Islands (Malvinas)",
|
||||||
|
"FEROE (ILES)",
|
||||||
|
"Fidji",
|
||||||
|
"FIDJI",
|
||||||
|
"Fiji",
|
||||||
|
"Finland",
|
||||||
|
"Finlande",
|
||||||
|
"FINLANDE",
|
||||||
|
"France",
|
||||||
|
"FRANCE",
|
||||||
|
"French Guiana",
|
||||||
|
"French Polynesia",
|
||||||
|
"French Southern Territories",
|
||||||
|
"Gabon",
|
||||||
|
"GABON",
|
||||||
|
"Gambia",
|
||||||
|
"Gambie",
|
||||||
|
"GAMBIE",
|
||||||
|
"Georgia",
|
||||||
|
"GEORGIE DU SUD ET LES ILES SANDWICH DU SUD",
|
||||||
|
"Géorgie du Sud et les îles Sandwich du Sud",
|
||||||
|
"GEORGIE",
|
||||||
|
"Géorgie",
|
||||||
|
"Germany",
|
||||||
|
"Ghana",
|
||||||
|
"GHANA",
|
||||||
|
"Gibraltar",
|
||||||
|
"GIBRALTAR",
|
||||||
|
"GRECE",
|
||||||
|
"Grèce",
|
||||||
|
"Greece",
|
||||||
|
"Grenada",
|
||||||
|
"Grenade",
|
||||||
|
"GRENADE",
|
||||||
|
"GROENLAND",
|
||||||
|
"Groënland",
|
||||||
|
"Guadeloupe",
|
||||||
|
"GUADELOUPE",
|
||||||
|
"Guam",
|
||||||
|
"GUAM",
|
||||||
|
"Guatemala",
|
||||||
|
"GUATEMALA",
|
||||||
|
"Guernesey",
|
||||||
|
"GUERNESEY",
|
||||||
|
"Guernsey",
|
||||||
|
"Guinea",
|
||||||
|
"GUINEE EQUATORIALE",
|
||||||
|
"Guinée Équatoriale",
|
||||||
|
"GUINEE-BISSAU",
|
||||||
|
"Guinée-Bissau",
|
||||||
|
"GUINEE",
|
||||||
|
"Guinée",
|
||||||
|
"Guyana",
|
||||||
|
"GUYANA",
|
||||||
|
"Guyane française",
|
||||||
|
"GUYANE",
|
||||||
|
"Haiti",
|
||||||
|
"HAITI",
|
||||||
|
"Haïti",
|
||||||
|
"HAWAII (ILES)",
|
||||||
|
"HEARD ET MACDONALD (ILES)",
|
||||||
|
"Holy See (Vatican City State)",
|
||||||
|
"Honduras",
|
||||||
|
"HONDURAS",
|
||||||
|
"Hong Kong",
|
||||||
|
"HONG-KONG",
|
||||||
|
"Hongrie",
|
||||||
|
"HONGRIE",
|
||||||
|
"Hungary",
|
||||||
|
"Iceland",
|
||||||
|
"île Bouvet",
|
||||||
|
"Île de Man",
|
||||||
|
"île Norfolk",
|
||||||
|
"îles Caïmans",
|
||||||
|
"îles Cook",
|
||||||
|
"îles Féroé",
|
||||||
|
"îles Heard-et-MacDonald",
|
||||||
|
"Îles Mariannes du Nord",
|
||||||
|
"Îles Marshall",
|
||||||
|
"Îles mineures éloignées des États-Unis",
|
||||||
|
"Îles Pitcairn",
|
||||||
|
"ILES PORTUGAISES DE L'OCEAN INDIEN",
|
||||||
|
"îles Turques-et-Caïques",
|
||||||
|
"Îles Vierges britanniques",
|
||||||
|
"Îles Vierges des États-Unis",
|
||||||
|
"Inde",
|
||||||
|
"INDE",
|
||||||
|
"India",
|
||||||
|
"Indonesia",
|
||||||
|
"INDONESIE",
|
||||||
|
"Indonésie",
|
||||||
|
"Irak",
|
||||||
|
"Iran, Islamic Republic of",
|
||||||
|
"Iran, République islamique d'",
|
||||||
|
"IRAN",
|
||||||
|
"Iraq",
|
||||||
|
"IRAQ",
|
||||||
|
"Ireland",
|
||||||
|
"IRLANDE, ou EIRE",
|
||||||
|
"Irlande",
|
||||||
|
"Islande",
|
||||||
|
"ISLANDE",
|
||||||
|
"Isle of Man",
|
||||||
|
"Israel",
|
||||||
|
"ISRAEL",
|
||||||
|
"Israël",
|
||||||
|
"Italie",
|
||||||
|
"ITALIE",
|
||||||
|
"Italy",
|
||||||
|
"Jamaica",
|
||||||
|
"JAMAIQUE",
|
||||||
|
"Jamaïque",
|
||||||
|
"Japan",
|
||||||
|
"Japon",
|
||||||
|
"JAPON",
|
||||||
|
"Jersey",
|
||||||
|
"JERSEY",
|
||||||
|
"Jordan",
|
||||||
|
"Jordanie",
|
||||||
|
"JORDANIE",
|
||||||
|
"KAMTCHATKA",
|
||||||
|
"Kazakhstan",
|
||||||
|
"KAZAKHSTAN",
|
||||||
|
"Kenya",
|
||||||
|
"KENYA",
|
||||||
|
"Kirghizistan",
|
||||||
|
"KIRGHIZISTAN",
|
||||||
|
"Korea, Democratic People's Republic of",
|
||||||
|
"Korea, Republic of",
|
||||||
|
"Kosovo",
|
||||||
|
"KOSOVO",
|
||||||
|
"KOWEIT",
|
||||||
|
"Koweït",
|
||||||
|
"Kuwait",
|
||||||
|
"Kyrgyzstan",
|
||||||
|
"LA REUNION",
|
||||||
|
"LABRADOR",
|
||||||
|
"Lao People's Democratic Republic",
|
||||||
|
"Lao, République démocratique populaire",
|
||||||
|
"LAOS",
|
||||||
|
"Latvia",
|
||||||
|
"Lebanon",
|
||||||
|
"Lesotho",
|
||||||
|
"LESOTHO",
|
||||||
|
"Lettonie",
|
||||||
|
"LETTONIE",
|
||||||
|
"Liban",
|
||||||
|
"LIBAN",
|
||||||
|
"Liberia",
|
||||||
|
"LIBERIA",
|
||||||
|
"Libéria",
|
||||||
|
"Libya",
|
||||||
|
"Libye",
|
||||||
|
"LIBYE",
|
||||||
|
"Liechtenstein",
|
||||||
|
"LIECHTENSTEIN",
|
||||||
|
"Lithuania",
|
||||||
|
"Lituanie",
|
||||||
|
"LITUANIE",
|
||||||
|
"Luxembourg",
|
||||||
|
"LUXEMBOURG",
|
||||||
|
"Macao",
|
||||||
|
"MACAO",
|
||||||
|
"Macau",
|
||||||
|
"MACEDOINE DU NORD (REPUBLIQUE DE)",
|
||||||
|
"Macédoine du Nord",
|
||||||
|
"Madagascar",
|
||||||
|
"MADAGASCAR",
|
||||||
|
"Malaisie",
|
||||||
|
"MALAISIE",
|
||||||
|
"Malawi",
|
||||||
|
"MALAWI",
|
||||||
|
"Malaysia",
|
||||||
|
"Maldives",
|
||||||
|
"MALDIVES",
|
||||||
|
"Mali",
|
||||||
|
"MALI",
|
||||||
|
"Malouines, Îles (Falkland)",
|
||||||
|
"MALOUINES, OU FALKLAND (ILES)",
|
||||||
|
"Malta",
|
||||||
|
"Malte",
|
||||||
|
"MALTE",
|
||||||
|
"MAN (ILE)",
|
||||||
|
"MARIANNES DU NORD (ILES)",
|
||||||
|
"Maroc",
|
||||||
|
"MAROC",
|
||||||
|
"MARSHALL (ILES)",
|
||||||
|
"Martinique",
|
||||||
|
"MARTINIQUE",
|
||||||
|
"Maurice",
|
||||||
|
"MAURICE",
|
||||||
|
"Mauritania",
|
||||||
|
"Mauritanie",
|
||||||
|
"MAURITANIE",
|
||||||
|
"Mauritius",
|
||||||
|
"Mayotte",
|
||||||
|
"MAYOTTE",
|
||||||
|
"Mexico",
|
||||||
|
"Mexique",
|
||||||
|
"MEXIQUE",
|
||||||
|
"Micronésie, États fédérés de",
|
||||||
|
"Moldavie",
|
||||||
|
"MOLDAVIE",
|
||||||
|
"Moldova",
|
||||||
|
"Monaco",
|
||||||
|
"MONACO",
|
||||||
|
"Mongolia",
|
||||||
|
"Mongolie",
|
||||||
|
"MONGOLIE",
|
||||||
|
"Montenegro",
|
||||||
|
"MONTENEGRO",
|
||||||
|
"Monténégro",
|
||||||
|
"MONTSERRAT",
|
||||||
|
"Morocco",
|
||||||
|
"Mozambique",
|
||||||
|
"MOZAMBIQUE",
|
||||||
|
"Myanmar",
|
||||||
|
"Namibia",
|
||||||
|
"Namibie",
|
||||||
|
"NAMIBIE",
|
||||||
|
"Nepal",
|
||||||
|
"NEPAL",
|
||||||
|
"Népal",
|
||||||
|
"Netherlands",
|
||||||
|
"New Caledonia",
|
||||||
|
"New Zealand",
|
||||||
|
"Nicaragua",
|
||||||
|
"NICARAGUA",
|
||||||
|
"Niger",
|
||||||
|
"NIGER",
|
||||||
|
"Nigeria",
|
||||||
|
"NIGERIA",
|
||||||
|
"North Macedonia",
|
||||||
|
"NORVEGE",
|
||||||
|
"Norvège",
|
||||||
|
"Norway",
|
||||||
|
"NOUVELLE-CALEDONIE",
|
||||||
|
"Nouvelle-Calédonie",
|
||||||
|
"NOUVELLE-ZELANDE",
|
||||||
|
"Nouvelle-Zélande",
|
||||||
|
"OCEAN INDIEN (TERRITOIRE BRITANNIQUE DE L')",
|
||||||
|
"Oman",
|
||||||
|
"OMAN",
|
||||||
|
"Ouganda",
|
||||||
|
"OUGANDA",
|
||||||
|
"OUZBEKISTAN",
|
||||||
|
"Ouzbékistan",
|
||||||
|
"Pakistan",
|
||||||
|
"PAKISTAN",
|
||||||
|
"Palaos",
|
||||||
|
"PALESTINE (Etat de)",
|
||||||
|
"Palestine, État de",
|
||||||
|
"Palestine, State of",
|
||||||
|
"Panama",
|
||||||
|
"PANAMA",
|
||||||
|
"PAPOUASIE-NOUVELLE-GUINEE",
|
||||||
|
"Papouasie-Nouvelle-Guinée",
|
||||||
|
"Papua New Guinea",
|
||||||
|
"Paraguay",
|
||||||
|
"PARAGUAY",
|
||||||
|
"Pays-Bas",
|
||||||
|
"PAYS-BAS",
|
||||||
|
"PEROU",
|
||||||
|
"Pérou",
|
||||||
|
"Peru",
|
||||||
|
"Philippines",
|
||||||
|
"PHILIPPINES",
|
||||||
|
"Poland",
|
||||||
|
"Pologne",
|
||||||
|
"POLOGNE",
|
||||||
|
"POLYNESIE FRANCAISE",
|
||||||
|
"Polynésie française",
|
||||||
|
"Porto Rico",
|
||||||
|
"PORTO RICO",
|
||||||
|
"Portugal",
|
||||||
|
"PORTUGAL",
|
||||||
|
"POSSESSIONS BRITANNIQUES AU PROCHE-ORIENT",
|
||||||
|
"PROVINCES ESPAGNOLES D'AFRIQUE",
|
||||||
|
"Puerto Rico",
|
||||||
|
"Qatar",
|
||||||
|
"QATAR",
|
||||||
|
"République centrafricaine",
|
||||||
|
"REPUBLIQUE DEMOCRATIQUE ALLEMANDE",
|
||||||
|
"République démocratique du Congo",
|
||||||
|
"République dominicaine",
|
||||||
|
"République du Congo",
|
||||||
|
"REPUBLIQUE FEDERALE D'ALLEMAGNE",
|
||||||
|
"Réunion, Île de la",
|
||||||
|
"Réunion",
|
||||||
|
"Romania",
|
||||||
|
"Roumanie",
|
||||||
|
"ROUMANIE",
|
||||||
|
"Royaume-Uni",
|
||||||
|
"ROYAUME-UNI",
|
||||||
|
"Russian Federation",
|
||||||
|
"Russie, Fédération de",
|
||||||
|
"RUSSIE",
|
||||||
|
"Rwanda",
|
||||||
|
"RWANDA",
|
||||||
|
"Sahara occidental",
|
||||||
|
"SAHARA OCCIDENTAL",
|
||||||
|
"Saint Barthélemy",
|
||||||
|
"Saint Kitts and Nevis",
|
||||||
|
"Saint Lucia",
|
||||||
|
"Saint Martin (French part)",
|
||||||
|
"Saint Pierre and Miquelon",
|
||||||
|
"Saint Vincent and the Grenadines",
|
||||||
|
"SAINT-BARTHELEMY",
|
||||||
|
"Saint-Barthélemy",
|
||||||
|
"SAINT-CHRISTOPHE-ET-NIEVES",
|
||||||
|
"Saint-Christophe-et-Niévès",
|
||||||
|
"Saint-Marin",
|
||||||
|
"SAINT-MARIN",
|
||||||
|
"Saint-Martin (partie française)",
|
||||||
|
"SAINT-MARTIN (PARTIE NEERLANDAISE)",
|
||||||
|
"Saint-Martin (partie néerlandaise)",
|
||||||
|
"SAINT-MARTIN",
|
||||||
|
"Saint-Pierre-et-Miquelon",
|
||||||
|
"SAINT-PIERRE-ET-MIQUELON",
|
||||||
|
"Saint-Siège (état de la cité du Vatican)",
|
||||||
|
"SAINT-VINCENT-ET-LES GRENADINES",
|
||||||
|
"Saint-Vincent-et-les-Grenadines",
|
||||||
|
"SAINTE HELENE, ASCENSION ET TRISTAN DA CUNHA",
|
||||||
|
"Sainte-Hélène, Ascension et Tristan da Cunha",
|
||||||
|
"Sainte-Lucie",
|
||||||
|
"SAINTE-LUCIE",
|
||||||
|
"SALOMON (ILES)",
|
||||||
|
"Salomon, Îles",
|
||||||
|
"Salvador",
|
||||||
|
"SAMOA AMERICAINES",
|
||||||
|
"Samoa américaines",
|
||||||
|
"SAMOA OCCIDENTALES",
|
||||||
|
"Samoa",
|
||||||
|
"Sao Tome and Principe",
|
||||||
|
"SAO TOME-ET-PRINCIPE",
|
||||||
|
"Sao Tomé-et-Principe",
|
||||||
|
"Saudi Arabia",
|
||||||
|
"Senegal",
|
||||||
|
"SENEGAL",
|
||||||
|
"Sénégal",
|
||||||
|
"Serbia",
|
||||||
|
"Serbie",
|
||||||
|
"SERBIE",
|
||||||
|
"Seychelles",
|
||||||
|
"SEYCHELLES",
|
||||||
|
"SIBERIE",
|
||||||
|
"Sierra Leone",
|
||||||
|
"SIERRA LEONE",
|
||||||
|
"Singapore",
|
||||||
|
"Singapour",
|
||||||
|
"SINGAPOUR",
|
||||||
|
"Sint Maarten (Dutch part)",
|
||||||
|
"Slovakia",
|
||||||
|
"Slovaquie",
|
||||||
|
"SLOVAQUIE",
|
||||||
|
"Slovenia",
|
||||||
|
"SLOVENIE",
|
||||||
|
"Slovénie",
|
||||||
|
"Somalia",
|
||||||
|
"Somalie",
|
||||||
|
"SOMALIE",
|
||||||
|
"SOUDAN ANGLO-EGYPTIEN, KENYA, OUGANDA",
|
||||||
|
"Soudan du Sud",
|
||||||
|
"SOUDAN DU SUD",
|
||||||
|
"Soudan",
|
||||||
|
"SOUDAN",
|
||||||
|
"South Africa",
|
||||||
|
"South Georgia and the South Sandwich Islands",
|
||||||
|
"South Sudan",
|
||||||
|
"Spain",
|
||||||
|
"Sri Lanka",
|
||||||
|
"SRI LANKA",
|
||||||
|
"Sudan",
|
||||||
|
"SUEDE",
|
||||||
|
"Suède",
|
||||||
|
"Suisse",
|
||||||
|
"SUISSE",
|
||||||
|
"Surinam",
|
||||||
|
"Suriname",
|
||||||
|
"SURINAME",
|
||||||
|
"Svalbard and Jan Mayen",
|
||||||
|
"Svalbard et île Jan Mayen",
|
||||||
|
"SWAZILAND",
|
||||||
|
"Sweden",
|
||||||
|
"Switzerland",
|
||||||
|
"Syrian Arab Republic",
|
||||||
|
"SYRIE",
|
||||||
|
"Syrienne, République arabe",
|
||||||
|
"Tadjikistan",
|
||||||
|
"TADJIKISTAN",
|
||||||
|
"Taiwan",
|
||||||
|
"TAIWAN",
|
||||||
|
"Taïwan",
|
||||||
|
"Tajikistan",
|
||||||
|
"TANGER",
|
||||||
|
"Tanzania",
|
||||||
|
"Tanzanie",
|
||||||
|
"TANZANIE",
|
||||||
|
"Tchad",
|
||||||
|
"TCHAD",
|
||||||
|
"TCHECOSLOVAQUIE",
|
||||||
|
"TCHEQUE (REPUBLIQUE)",
|
||||||
|
"Tchéquie",
|
||||||
|
"TERR. DES ETATS-UNIS D'AMERIQUE EN AMERIQUE",
|
||||||
|
"TERR. DES ETATS-UNIS D'AMERIQUE EN OCEANIE",
|
||||||
|
"TERR. DU ROYAUME-UNI DANS L'ATLANTIQUE SUD",
|
||||||
|
"TERRE-NEUVE",
|
||||||
|
"TERRES AUSTRALES FRANCAISES",
|
||||||
|
"Terres australes françaises",
|
||||||
|
"Territoire britannique de l'océan Indien",
|
||||||
|
"TERRITOIRES DU ROYAUME-UNI AUX ANTILLES",
|
||||||
|
"Thailand",
|
||||||
|
"THAILANDE",
|
||||||
|
"Thaïlande",
|
||||||
|
"Timor oriental",
|
||||||
|
"TIMOR ORIENTAL",
|
||||||
|
"Timor-Leste",
|
||||||
|
"Togo",
|
||||||
|
"TOGO",
|
||||||
|
"Tonga",
|
||||||
|
"TONGA",
|
||||||
|
"Trinidad and Tobago",
|
||||||
|
"TRINITE-ET-TOBAGO",
|
||||||
|
"Trinité-et-Tobago",
|
||||||
|
"Tunisia",
|
||||||
|
"Tunisie",
|
||||||
|
"TUNISIE",
|
||||||
|
"TURKESTAN RUSSE",
|
||||||
|
"Turkey",
|
||||||
|
"Turkmenistan",
|
||||||
|
"TURKMENISTAN",
|
||||||
|
"Turkménistan",
|
||||||
|
"Turks and Caicos Islands",
|
||||||
|
"TURKS ET CAIQUES (ILES)",
|
||||||
|
"TURQUIE D'EUROPE",
|
||||||
|
"Turquie",
|
||||||
|
"TURQUIE",
|
||||||
|
"Tuvalu",
|
||||||
|
"TUVALU",
|
||||||
|
"Uganda",
|
||||||
|
"Ukraine",
|
||||||
|
"UKRAINE",
|
||||||
|
"United Arab Emirates",
|
||||||
|
"United Kingdom",
|
||||||
|
"United States Minor Outlying Islands",
|
||||||
|
"United States",
|
||||||
|
"Uruguay",
|
||||||
|
"URUGUAY",
|
||||||
|
"Uzbekistan",
|
||||||
|
"Vanuatu",
|
||||||
|
"VANUATU",
|
||||||
|
"VATICAN, ou SAINT-SIEGE",
|
||||||
|
"Venezuela",
|
||||||
|
"VENEZUELA",
|
||||||
|
"Vénézuela",
|
||||||
|
"VIERGES BRITANNIQUES (ILES)",
|
||||||
|
"VIERGES DES ETATS-UNIS (ILES)",
|
||||||
|
"VIET NAM DU NORD",
|
||||||
|
"VIET NAM DU SUD",
|
||||||
|
"VIET NAM",
|
||||||
|
"Viêt Nam",
|
||||||
|
"Vietnam",
|
||||||
|
"Virgin Islands, British",
|
||||||
|
"Virgin Islands, U.S.",
|
||||||
|
"Wallis et Futuna",
|
||||||
|
"WALLIS-ET-FUTUNA",
|
||||||
|
"Western Sahara",
|
||||||
|
"YEMEN (REPUBLIQUE ARABE DU)",
|
||||||
|
"YEMEN DEMOCRATIQUE",
|
||||||
|
"Yemen",
|
||||||
|
"YEMEN",
|
||||||
|
"Yémen",
|
||||||
|
"Zambia",
|
||||||
|
"Zambie",
|
||||||
|
"ZAMBIE",
|
||||||
|
"ZANZIBAR",
|
||||||
|
"Zimbabwe",
|
||||||
|
"ZIMBABWE"
|
||||||
|
]
|
45
spec/services/api_geo_service_spec.rb
Normal file
45
spec/services/api_geo_service_spec.rb
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
describe APIGeoService do
|
||||||
|
let(:memory_store) { ActiveSupport::Cache.lookup_store(:memory_store) }
|
||||||
|
|
||||||
|
before do
|
||||||
|
allow(Rails).to receive(:cache).and_return(memory_store)
|
||||||
|
Rails.cache.clear
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'pays' do
|
||||||
|
it 'countrie_code' do
|
||||||
|
countries = JSON.parse(Rails.root.join('spec/fixtures/files/pays_dump.json').read)
|
||||||
|
countries_without_code = countries.map { APIGeoService.country_code(_1) }.count(&:nil?)
|
||||||
|
expect(countries_without_code).to eq(67)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'country_name' do
|
||||||
|
it 'Kosovo' do
|
||||||
|
expect(APIGeoService.country_code('Kosovo')).to eq('XK')
|
||||||
|
expect(APIGeoService.country_name('XK')).to eq('Kosovo')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'Thaïlande' do
|
||||||
|
expect(APIGeoService.country_code('Thaïlande')).to eq('TH')
|
||||||
|
expect(APIGeoService.country_name('TH')).to eq('Thaïlande')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'regions', vcr: { cassette_name: 'api_geo_regions' } do
|
||||||
|
it 'return sorted results' do
|
||||||
|
expect(APIGeoService.regions.size).to eq(18)
|
||||||
|
expect(APIGeoService.regions.first).to eq(code: '84', name: 'Auvergne-Rhône-Alpes')
|
||||||
|
expect(APIGeoService.regions.last).to eq(code: '93', name: 'Provence-Alpes-Côte d’Azur')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'departements', vcr: { cassette_name: 'api_geo_departements' } do
|
||||||
|
it 'return sorted results' do
|
||||||
|
expect(APIGeoService.departements.size).to eq(102)
|
||||||
|
expect(APIGeoService.departements.first).to eq(code: '99', name: 'Etranger')
|
||||||
|
expect(APIGeoService.departements.second).to eq(code: '01', name: 'Ain')
|
||||||
|
expect(APIGeoService.departements.last).to eq(code: '976', name: 'Mayotte')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue