countries 5.1.0 β†’ 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (544) hide show
  1. checksums.yaml +4 -4
  2. data/lib/countries/cache/countries.json +1 -1
  3. data/lib/countries/cache/locales/ab.json +1 -1
  4. data/lib/countries/cache/locales/ak.json +1 -1
  5. data/lib/countries/cache/locales/an.json +1 -1
  6. data/lib/countries/cache/locales/ar.json +1 -1
  7. data/lib/countries/cache/locales/ay.json +1 -1
  8. data/lib/countries/cache/locales/ba.json +1 -1
  9. data/lib/countries/cache/locales/bi.json +1 -1
  10. data/lib/countries/cache/locales/ch.json +1 -1
  11. data/lib/countries/cache/locales/de.json +1 -1
  12. data/lib/countries/cache/locales/ee.json +1 -1
  13. data/lib/countries/cache/locales/en.json +1 -1
  14. data/lib/countries/cache/locales/fr.json +1 -1
  15. data/lib/countries/cache/locales/gn.json +1 -1
  16. data/lib/countries/cache/locales/ja.json +1 -1
  17. data/lib/countries/cache/locales/ki.json +1 -1
  18. data/lib/countries/cache/locales/kl.json +1 -1
  19. data/lib/countries/cache/locales/lt.json +1 -1
  20. data/lib/countries/cache/locales/pt-br.json +1 -1
  21. data/lib/countries/cache/locales/sd.json +1 -1
  22. data/lib/countries/cache/locales/sw.json +1 -1
  23. data/lib/countries/cache/locales/th.json +1 -1
  24. data/lib/countries/cache/locales/tk.json +1 -1
  25. data/lib/countries/cache/locales/tl.json +1 -1
  26. data/lib/countries/cache/locales/ve.json +1 -1
  27. data/lib/countries/cache/locales/xh.json +1 -1
  28. data/lib/countries/configuration.rb +1 -1
  29. data/lib/countries/country/class_methods.rb +22 -23
  30. data/lib/countries/country/country_subdivision_methods.rb +82 -0
  31. data/lib/countries/country/currency_methods.rb +0 -1
  32. data/lib/countries/country/emoji.rb +1 -1
  33. data/lib/countries/country/finder_methods.rb +5 -7
  34. data/lib/countries/country.rb +27 -51
  35. data/lib/countries/data/countries/AD.yaml +1 -0
  36. data/lib/countries/data/countries/AE.yaml +1 -0
  37. data/lib/countries/data/countries/AF.yaml +1 -0
  38. data/lib/countries/data/countries/AG.yaml +1 -0
  39. data/lib/countries/data/countries/AI.yaml +1 -0
  40. data/lib/countries/data/countries/AL.yaml +1 -0
  41. data/lib/countries/data/countries/AM.yaml +1 -0
  42. data/lib/countries/data/countries/AO.yaml +1 -0
  43. data/lib/countries/data/countries/AQ.yaml +1 -0
  44. data/lib/countries/data/countries/AR.yaml +2 -0
  45. data/lib/countries/data/countries/AS.yaml +1 -0
  46. data/lib/countries/data/countries/AT.yaml +1 -0
  47. data/lib/countries/data/countries/AU.yaml +3 -0
  48. data/lib/countries/data/countries/AW.yaml +1 -0
  49. data/lib/countries/data/countries/AX.yaml +3 -0
  50. data/lib/countries/data/countries/AZ.yaml +1 -0
  51. data/lib/countries/data/countries/BA.yaml +1 -0
  52. data/lib/countries/data/countries/BB.yaml +1 -0
  53. data/lib/countries/data/countries/BD.yaml +1 -0
  54. data/lib/countries/data/countries/BE.yaml +1 -0
  55. data/lib/countries/data/countries/BF.yaml +1 -0
  56. data/lib/countries/data/countries/BG.yaml +1 -0
  57. data/lib/countries/data/countries/BH.yaml +1 -0
  58. data/lib/countries/data/countries/BI.yaml +1 -0
  59. data/lib/countries/data/countries/BJ.yaml +1 -0
  60. data/lib/countries/data/countries/BL.yaml +1 -0
  61. data/lib/countries/data/countries/BM.yaml +1 -0
  62. data/lib/countries/data/countries/BN.yaml +1 -0
  63. data/lib/countries/data/countries/BO.yaml +1 -0
  64. data/lib/countries/data/countries/BQ.yaml +1 -0
  65. data/lib/countries/data/countries/BR.yaml +2 -0
  66. data/lib/countries/data/countries/BS.yaml +2 -2
  67. data/lib/countries/data/countries/BT.yaml +1 -0
  68. data/lib/countries/data/countries/BV.yaml +1 -0
  69. data/lib/countries/data/countries/BW.yaml +1 -0
  70. data/lib/countries/data/countries/BY.yaml +1 -0
  71. data/lib/countries/data/countries/BZ.yaml +1 -0
  72. data/lib/countries/data/countries/CA.yaml +3 -0
  73. data/lib/countries/data/countries/CC.yaml +1 -0
  74. data/lib/countries/data/countries/CD.yaml +1 -0
  75. data/lib/countries/data/countries/CF.yaml +1 -0
  76. data/lib/countries/data/countries/CG.yaml +1 -0
  77. data/lib/countries/data/countries/CH.yaml +1 -0
  78. data/lib/countries/data/countries/CI.yaml +1 -0
  79. data/lib/countries/data/countries/CK.yaml +1 -0
  80. data/lib/countries/data/countries/CL.yaml +1 -0
  81. data/lib/countries/data/countries/CM.yaml +1 -0
  82. data/lib/countries/data/countries/CN.yaml +2 -0
  83. data/lib/countries/data/countries/CO.yaml +1 -0
  84. data/lib/countries/data/countries/CR.yaml +1 -0
  85. data/lib/countries/data/countries/CU.yaml +1 -0
  86. data/lib/countries/data/countries/CV.yaml +1 -0
  87. data/lib/countries/data/countries/CW.yaml +1 -0
  88. data/lib/countries/data/countries/CX.yaml +1 -0
  89. data/lib/countries/data/countries/CY.yaml +1 -0
  90. data/lib/countries/data/countries/CZ.yaml +3 -3
  91. data/lib/countries/data/countries/DE.yaml +3 -0
  92. data/lib/countries/data/countries/DJ.yaml +1 -0
  93. data/lib/countries/data/countries/DK.yaml +1 -0
  94. data/lib/countries/data/countries/DM.yaml +1 -0
  95. data/lib/countries/data/countries/DO.yaml +1 -0
  96. data/lib/countries/data/countries/DZ.yaml +1 -0
  97. data/lib/countries/data/countries/EC.yaml +1 -0
  98. data/lib/countries/data/countries/EE.yaml +1 -0
  99. data/lib/countries/data/countries/EG.yaml +1 -0
  100. data/lib/countries/data/countries/EH.yaml +1 -0
  101. data/lib/countries/data/countries/ER.yaml +1 -0
  102. data/lib/countries/data/countries/ES.yaml +1 -0
  103. data/lib/countries/data/countries/ET.yaml +1 -0
  104. data/lib/countries/data/countries/FI.yaml +1 -0
  105. data/lib/countries/data/countries/FJ.yaml +1 -0
  106. data/lib/countries/data/countries/FK.yaml +1 -0
  107. data/lib/countries/data/countries/FM.yaml +1 -0
  108. data/lib/countries/data/countries/FO.yaml +1 -0
  109. data/lib/countries/data/countries/FR.yaml +3 -0
  110. data/lib/countries/data/countries/GA.yaml +1 -0
  111. data/lib/countries/data/countries/GB.yaml +6 -0
  112. data/lib/countries/data/countries/GD.yaml +1 -0
  113. data/lib/countries/data/countries/GE.yaml +1 -0
  114. data/lib/countries/data/countries/GF.yaml +3 -0
  115. data/lib/countries/data/countries/GG.yaml +1 -0
  116. data/lib/countries/data/countries/GH.yaml +1 -0
  117. data/lib/countries/data/countries/GI.yaml +1 -0
  118. data/lib/countries/data/countries/GL.yaml +1 -0
  119. data/lib/countries/data/countries/GM.yaml +2 -1
  120. data/lib/countries/data/countries/GN.yaml +1 -0
  121. data/lib/countries/data/countries/GP.yaml +4 -1
  122. data/lib/countries/data/countries/GQ.yaml +1 -0
  123. data/lib/countries/data/countries/GR.yaml +1 -0
  124. data/lib/countries/data/countries/GS.yaml +1 -0
  125. data/lib/countries/data/countries/GT.yaml +1 -0
  126. data/lib/countries/data/countries/GU.yaml +1 -0
  127. data/lib/countries/data/countries/GW.yaml +1 -0
  128. data/lib/countries/data/countries/GY.yaml +1 -0
  129. data/lib/countries/data/countries/HK.yaml +1 -0
  130. data/lib/countries/data/countries/HM.yaml +1 -0
  131. data/lib/countries/data/countries/HN.yaml +1 -0
  132. data/lib/countries/data/countries/HR.yaml +2 -1
  133. data/lib/countries/data/countries/HT.yaml +1 -0
  134. data/lib/countries/data/countries/HU.yaml +1 -0
  135. data/lib/countries/data/countries/ID.yaml +2 -0
  136. data/lib/countries/data/countries/IE.yaml +1 -0
  137. data/lib/countries/data/countries/IL.yaml +1 -0
  138. data/lib/countries/data/countries/IM.yaml +1 -0
  139. data/lib/countries/data/countries/IN.yaml +2 -0
  140. data/lib/countries/data/countries/IO.yaml +1 -0
  141. data/lib/countries/data/countries/IQ.yaml +1 -0
  142. data/lib/countries/data/countries/IR.yaml +1 -0
  143. data/lib/countries/data/countries/IS.yaml +1 -0
  144. data/lib/countries/data/countries/IT.yaml +3 -0
  145. data/lib/countries/data/countries/JE.yaml +1 -0
  146. data/lib/countries/data/countries/JM.yaml +1 -0
  147. data/lib/countries/data/countries/JO.yaml +1 -0
  148. data/lib/countries/data/countries/JP.yaml +3 -0
  149. data/lib/countries/data/countries/KE.yaml +1 -0
  150. data/lib/countries/data/countries/KG.yaml +1 -0
  151. data/lib/countries/data/countries/KH.yaml +1 -0
  152. data/lib/countries/data/countries/KI.yaml +1 -0
  153. data/lib/countries/data/countries/KM.yaml +1 -0
  154. data/lib/countries/data/countries/KN.yaml +1 -0
  155. data/lib/countries/data/countries/KP.yaml +1 -0
  156. data/lib/countries/data/countries/KR.yaml +2 -0
  157. data/lib/countries/data/countries/KW.yaml +1 -0
  158. data/lib/countries/data/countries/KY.yaml +1 -0
  159. data/lib/countries/data/countries/KZ.yaml +1 -0
  160. data/lib/countries/data/countries/LA.yaml +1 -0
  161. data/lib/countries/data/countries/LB.yaml +2 -1
  162. data/lib/countries/data/countries/LC.yaml +1 -0
  163. data/lib/countries/data/countries/LI.yaml +3 -0
  164. data/lib/countries/data/countries/LK.yaml +1 -0
  165. data/lib/countries/data/countries/LR.yaml +1 -0
  166. data/lib/countries/data/countries/LS.yaml +1 -0
  167. data/lib/countries/data/countries/LT.yaml +1 -0
  168. data/lib/countries/data/countries/LU.yaml +1 -0
  169. data/lib/countries/data/countries/LV.yaml +1 -0
  170. data/lib/countries/data/countries/LY.yaml +1 -0
  171. data/lib/countries/data/countries/MA.yaml +1 -0
  172. data/lib/countries/data/countries/MC.yaml +3 -0
  173. data/lib/countries/data/countries/MD.yaml +1 -0
  174. data/lib/countries/data/countries/ME.yaml +1 -0
  175. data/lib/countries/data/countries/MF.yaml +4 -1
  176. data/lib/countries/data/countries/MG.yaml +1 -0
  177. data/lib/countries/data/countries/MH.yaml +1 -0
  178. data/lib/countries/data/countries/MK.yaml +2 -0
  179. data/lib/countries/data/countries/ML.yaml +1 -0
  180. data/lib/countries/data/countries/MM.yaml +2 -1
  181. data/lib/countries/data/countries/MN.yaml +1 -0
  182. data/lib/countries/data/countries/MO.yaml +1 -0
  183. data/lib/countries/data/countries/MP.yaml +1 -0
  184. data/lib/countries/data/countries/MQ.yaml +3 -0
  185. data/lib/countries/data/countries/MR.yaml +1 -0
  186. data/lib/countries/data/countries/MS.yaml +1 -0
  187. data/lib/countries/data/countries/MT.yaml +1 -0
  188. data/lib/countries/data/countries/MU.yaml +1 -0
  189. data/lib/countries/data/countries/MV.yaml +1 -0
  190. data/lib/countries/data/countries/MW.yaml +1 -0
  191. data/lib/countries/data/countries/MX.yaml +2 -0
  192. data/lib/countries/data/countries/MY.yaml +1 -0
  193. data/lib/countries/data/countries/MZ.yaml +1 -0
  194. data/lib/countries/data/countries/NA.yaml +1 -0
  195. data/lib/countries/data/countries/NC.yaml +1 -0
  196. data/lib/countries/data/countries/NE.yaml +1 -0
  197. data/lib/countries/data/countries/NF.yaml +1 -0
  198. data/lib/countries/data/countries/NG.yaml +1 -0
  199. data/lib/countries/data/countries/NI.yaml +1 -0
  200. data/lib/countries/data/countries/NL.yaml +2 -0
  201. data/lib/countries/data/countries/NO.yaml +1 -0
  202. data/lib/countries/data/countries/NP.yaml +1 -0
  203. data/lib/countries/data/countries/NR.yaml +1 -0
  204. data/lib/countries/data/countries/NU.yaml +1 -0
  205. data/lib/countries/data/countries/NZ.yaml +1 -0
  206. data/lib/countries/data/countries/OM.yaml +1 -0
  207. data/lib/countries/data/countries/PA.yaml +1 -0
  208. data/lib/countries/data/countries/PE.yaml +1 -0
  209. data/lib/countries/data/countries/PF.yaml +1 -0
  210. data/lib/countries/data/countries/PG.yaml +1 -0
  211. data/lib/countries/data/countries/PH.yaml +1 -0
  212. data/lib/countries/data/countries/PK.yaml +1 -0
  213. data/lib/countries/data/countries/PL.yaml +1 -0
  214. data/lib/countries/data/countries/PM.yaml +1 -0
  215. data/lib/countries/data/countries/PN.yaml +1 -0
  216. data/lib/countries/data/countries/PR.yaml +1 -0
  217. data/lib/countries/data/countries/PS.yaml +3 -0
  218. data/lib/countries/data/countries/PT.yaml +1 -0
  219. data/lib/countries/data/countries/PW.yaml +1 -0
  220. data/lib/countries/data/countries/PY.yaml +1 -0
  221. data/lib/countries/data/countries/QA.yaml +1 -0
  222. data/lib/countries/data/countries/RE.yaml +3 -0
  223. data/lib/countries/data/countries/RO.yaml +1 -0
  224. data/lib/countries/data/countries/RS.yaml +1 -0
  225. data/lib/countries/data/countries/RU.yaml +2 -0
  226. data/lib/countries/data/countries/RW.yaml +1 -0
  227. data/lib/countries/data/countries/SA.yaml +2 -0
  228. data/lib/countries/data/countries/SB.yaml +1 -0
  229. data/lib/countries/data/countries/SC.yaml +1 -0
  230. data/lib/countries/data/countries/SD.yaml +1 -0
  231. data/lib/countries/data/countries/SE.yaml +1 -0
  232. data/lib/countries/data/countries/SG.yaml +1 -0
  233. data/lib/countries/data/countries/SH.yaml +1 -0
  234. data/lib/countries/data/countries/SI.yaml +1 -0
  235. data/lib/countries/data/countries/SJ.yaml +1 -0
  236. data/lib/countries/data/countries/SK.yaml +1 -0
  237. data/lib/countries/data/countries/SL.yaml +1 -0
  238. data/lib/countries/data/countries/SM.yaml +1 -0
  239. data/lib/countries/data/countries/SN.yaml +1 -0
  240. data/lib/countries/data/countries/SO.yaml +1 -0
  241. data/lib/countries/data/countries/SR.yaml +1 -0
  242. data/lib/countries/data/countries/SS.yaml +1 -0
  243. data/lib/countries/data/countries/ST.yaml +1 -0
  244. data/lib/countries/data/countries/SV.yaml +1 -0
  245. data/lib/countries/data/countries/SX.yaml +1 -0
  246. data/lib/countries/data/countries/SY.yaml +1 -0
  247. data/lib/countries/data/countries/SZ.yaml +1 -0
  248. data/lib/countries/data/countries/TC.yaml +1 -0
  249. data/lib/countries/data/countries/TD.yaml +1 -0
  250. data/lib/countries/data/countries/TF.yaml +1 -0
  251. data/lib/countries/data/countries/TG.yaml +1 -0
  252. data/lib/countries/data/countries/TH.yaml +2 -0
  253. data/lib/countries/data/countries/TJ.yaml +1 -0
  254. data/lib/countries/data/countries/TK.yaml +1 -0
  255. data/lib/countries/data/countries/TL.yaml +1 -0
  256. data/lib/countries/data/countries/TM.yaml +2 -1
  257. data/lib/countries/data/countries/TN.yaml +1 -0
  258. data/lib/countries/data/countries/TO.yaml +1 -0
  259. data/lib/countries/data/countries/TR.yaml +4 -2
  260. data/lib/countries/data/countries/TT.yaml +1 -0
  261. data/lib/countries/data/countries/TV.yaml +1 -0
  262. data/lib/countries/data/countries/TW.yaml +16 -13
  263. data/lib/countries/data/countries/TZ.yaml +1 -0
  264. data/lib/countries/data/countries/UA.yaml +1 -0
  265. data/lib/countries/data/countries/UG.yaml +1 -0
  266. data/lib/countries/data/countries/UM.yaml +1 -0
  267. data/lib/countries/data/countries/US.yaml +4 -1
  268. data/lib/countries/data/countries/UY.yaml +1 -0
  269. data/lib/countries/data/countries/UZ.yaml +1 -0
  270. data/lib/countries/data/countries/VA.yaml +1 -0
  271. data/lib/countries/data/countries/VC.yaml +1 -0
  272. data/lib/countries/data/countries/VE.yaml +1 -0
  273. data/lib/countries/data/countries/VG.yaml +1 -0
  274. data/lib/countries/data/countries/VI.yaml +2 -0
  275. data/lib/countries/data/countries/VN.yaml +1 -0
  276. data/lib/countries/data/countries/VU.yaml +1 -0
  277. data/lib/countries/data/countries/WF.yaml +1 -0
  278. data/lib/countries/data/countries/WS.yaml +1 -0
  279. data/lib/countries/data/countries/YE.yaml +1 -0
  280. data/lib/countries/data/countries/YT.yaml +3 -0
  281. data/lib/countries/data/countries/ZA.yaml +2 -0
  282. data/lib/countries/data/countries/ZM.yaml +1 -0
  283. data/lib/countries/data/countries/ZW.yaml +1 -0
  284. data/lib/countries/data/locales_methods.rb +23 -0
  285. data/lib/countries/data/subdivision_methods.rb +30 -0
  286. data/lib/countries/data/subdivisions/AD.yaml +7 -0
  287. data/lib/countries/data/subdivisions/AE.yaml +24 -0
  288. data/lib/countries/data/subdivisions/AF.yaml +200 -1
  289. data/lib/countries/data/subdivisions/AG.yaml +17 -0
  290. data/lib/countries/data/subdivisions/AL.yaml +69 -0
  291. data/lib/countries/data/subdivisions/AM.yaml +44 -0
  292. data/lib/countries/data/subdivisions/AO.yaml +54 -0
  293. data/lib/countries/data/subdivisions/AR.yaml +69 -0
  294. data/lib/countries/data/subdivisions/AT.yaml +35 -0
  295. data/lib/countries/data/subdivisions/AU.yaml +37 -0
  296. data/lib/countries/data/subdivisions/AZ.yaml +316 -2
  297. data/lib/countries/data/subdivisions/BA.yaml +8 -0
  298. data/lib/countries/data/subdivisions/BB.yaml +15 -0
  299. data/lib/countries/data/subdivisions/BD.yaml +211 -0
  300. data/lib/countries/data/subdivisions/BE.yaml +34 -0
  301. data/lib/countries/data/subdivisions/BF.yaml +56 -0
  302. data/lib/countries/data/subdivisions/BG.yaml +30 -0
  303. data/lib/countries/data/subdivisions/BH.yaml +13 -0
  304. data/lib/countries/data/subdivisions/BI.yaml +54 -0
  305. data/lib/countries/data/subdivisions/BJ.yaml +22 -0
  306. data/lib/countries/data/subdivisions/BN.yaml +9 -0
  307. data/lib/countries/data/subdivisions/BO.yaml +35 -0
  308. data/lib/countries/data/subdivisions/BQ.yaml +4 -0
  309. data/lib/countries/data/subdivisions/BR.yaml +14 -0
  310. data/lib/countries/data/subdivisions/BS.yaml +24 -0
  311. data/lib/countries/data/subdivisions/BT.yaml +24 -0
  312. data/lib/countries/data/subdivisions/BW.yaml +24 -0
  313. data/lib/countries/data/subdivisions/BY.yaml +5 -0
  314. data/lib/countries/data/subdivisions/BZ.yaml +3 -0
  315. data/lib/countries/data/subdivisions/CA.yaml +24 -0
  316. data/lib/countries/data/subdivisions/CD.yaml +77 -0
  317. data/lib/countries/data/subdivisions/CF.yaml +15 -0
  318. data/lib/countries/data/subdivisions/CG.yaml +18 -0
  319. data/lib/countries/data/subdivisions/CH.yaml +92 -0
  320. data/lib/countries/data/subdivisions/CI.yaml +65 -0
  321. data/lib/countries/data/subdivisions/CL.yaml +45 -2
  322. data/lib/countries/data/subdivisions/CM.yaml +22 -0
  323. data/lib/countries/data/subdivisions/CN.yaml +98 -0
  324. data/lib/countries/data/subdivisions/CO.yaml +68 -0
  325. data/lib/countries/data/subdivisions/CR.yaml +14 -0
  326. data/lib/countries/data/subdivisions/CU.yaml +42 -0
  327. data/lib/countries/data/subdivisions/CV.yaml +32 -0
  328. data/lib/countries/data/subdivisions/CY.yaml +18 -0
  329. data/lib/countries/data/subdivisions/CZ.yaml +227 -0
  330. data/lib/countries/data/subdivisions/DE.yaml +31 -0
  331. data/lib/countries/data/subdivisions/DJ.yaml +16 -0
  332. data/lib/countries/data/subdivisions/DK.yaml +13 -0
  333. data/lib/countries/data/subdivisions/DM.yaml +1 -0
  334. data/lib/countries/data/subdivisions/DO.yaml +102 -0
  335. data/lib/countries/data/subdivisions/DZ.yaml +104 -0
  336. data/lib/countries/data/subdivisions/EC.yaml +72 -0
  337. data/lib/countries/data/subdivisions/EE.yaml +6 -0
  338. data/lib/countries/data/subdivisions/EG.yaml +54 -0
  339. data/lib/countries/data/subdivisions/ER.yaml +2 -0
  340. data/lib/countries/data/subdivisions/ES.yaml +252 -0
  341. data/lib/countries/data/subdivisions/ET.yaml +27 -0
  342. data/lib/countries/data/subdivisions/FI.yaml +78 -0
  343. data/lib/countries/data/subdivisions/FJ.yaml +30 -0
  344. data/lib/countries/data/subdivisions/FM.yaml +11 -0
  345. data/lib/countries/data/subdivisions/FR.yaml +332 -1
  346. data/lib/countries/data/subdivisions/GA.yaml +24 -0
  347. data/lib/countries/data/subdivisions/GB.yaml +488 -0
  348. data/lib/countries/data/subdivisions/GD.yaml +10 -0
  349. data/lib/countries/data/subdivisions/GE.yaml +34 -0
  350. data/lib/countries/data/subdivisions/GH.yaml +79 -0
  351. data/lib/countries/data/subdivisions/GL.yaml +58 -0
  352. data/lib/countries/data/subdivisions/GM.yaml +10 -0
  353. data/lib/countries/data/subdivisions/GN.yaml +65 -0
  354. data/lib/countries/data/subdivisions/GQ.yaml +36 -0
  355. data/lib/countries/data/subdivisions/GR.yaml +41 -0
  356. data/lib/countries/data/subdivisions/GW.yaml +24 -0
  357. data/lib/countries/data/subdivisions/GY.yaml +31 -0
  358. data/lib/countries/data/subdivisions/HN.yaml +21 -0
  359. data/lib/countries/data/subdivisions/HR.yaml +82 -0
  360. data/lib/countries/data/subdivisions/HT.yaml +14 -0
  361. data/lib/countries/data/subdivisions/HU.yaml +94 -0
  362. data/lib/countries/data/subdivisions/ID.yaml +99 -0
  363. data/lib/countries/data/subdivisions/IE.yaml +39 -0
  364. data/lib/countries/data/subdivisions/IL.yaml +15 -0
  365. data/lib/countries/data/subdivisions/IN.yaml +219 -9
  366. data/lib/countries/data/subdivisions/IQ.yaml +59 -0
  367. data/lib/countries/data/subdivisions/IR.yaml +34 -2
  368. data/lib/countries/data/subdivisions/IS.yaml +560 -0
  369. data/lib/countries/data/subdivisions/IT.yaml +321 -0
  370. data/lib/countries/data/subdivisions/JM.yaml +22 -0
  371. data/lib/countries/data/subdivisions/JO.yaml +16 -0
  372. data/lib/countries/data/subdivisions/JP.yaml +42 -0
  373. data/lib/countries/data/subdivisions/KE.yaml +298 -0
  374. data/lib/countries/data/subdivisions/KG.yaml +28 -0
  375. data/lib/countries/data/subdivisions/KH.yaml +108 -0
  376. data/lib/countries/data/subdivisions/KI.yaml +6 -0
  377. data/lib/countries/data/subdivisions/KM.yaml +4 -0
  378. data/lib/countries/data/subdivisions/KN.yaml +6 -0
  379. data/lib/countries/data/subdivisions/KP.yaml +42 -0
  380. data/lib/countries/data/subdivisions/KR.yaml +36 -0
  381. data/lib/countries/data/subdivisions/KW.yaml +5 -0
  382. data/lib/countries/data/subdivisions/KZ.yaml +127 -0
  383. data/lib/countries/data/subdivisions/LA.yaml +49 -0
  384. data/lib/countries/data/subdivisions/LB.yaml +28 -0
  385. data/lib/countries/data/subdivisions/LC.yaml +6 -0
  386. data/lib/countries/data/subdivisions/LI.yaml +37 -0
  387. data/lib/countries/data/subdivisions/LK.yaml +67 -0
  388. data/lib/countries/data/subdivisions/LR.yaml +16 -0
  389. data/lib/countries/data/subdivisions/LS.yaml +23 -0
  390. data/lib/countries/data/subdivisions/LT.yaml +315 -0
  391. data/lib/countries/data/subdivisions/LU.yaml +31 -0
  392. data/lib/countries/data/subdivisions/LV.yaml +83 -0
  393. data/lib/countries/data/subdivisions/LY.yaml +16 -0
  394. data/lib/countries/data/subdivisions/MA.yaml +827 -12
  395. data/lib/countries/data/subdivisions/MC.yaml +47 -0
  396. data/lib/countries/data/subdivisions/MD.yaml +41 -0
  397. data/lib/countries/data/subdivisions/ME.yaml +83 -0
  398. data/lib/countries/data/subdivisions/MG.yaml +21 -0
  399. data/lib/countries/data/subdivisions/MH.yaml +70 -0
  400. data/lib/countries/data/subdivisions/MK.yaml +505 -0
  401. data/lib/countries/data/subdivisions/ML.yaml +33 -0
  402. data/lib/countries/data/subdivisions/MM.yaml +51 -0
  403. data/lib/countries/data/subdivisions/MN.yaml +94 -0
  404. data/lib/countries/data/subdivisions/MR.yaml +32 -0
  405. data/lib/countries/data/subdivisions/MT.yaml +126 -0
  406. data/lib/countries/data/subdivisions/MU.yaml +21 -0
  407. data/lib/countries/data/subdivisions/MV.yaml +20 -0
  408. data/lib/countries/data/subdivisions/MW.yaml +52 -0
  409. data/lib/countries/data/subdivisions/MX.yaml +23 -0
  410. data/lib/countries/data/subdivisions/MY.yaml +24 -0
  411. data/lib/countries/data/subdivisions/MZ.yaml +20 -0
  412. data/lib/countries/data/subdivisions/NA.yaml +28 -0
  413. data/lib/countries/data/subdivisions/NE.yaml +9 -0
  414. data/lib/countries/data/subdivisions/NG.yaml +89 -0
  415. data/lib/countries/data/subdivisions/NI.yaml +25 -0
  416. data/lib/countries/data/subdivisions/NL.yaml +24 -0
  417. data/lib/countries/data/subdivisions/NO.yaml +138 -1
  418. data/lib/countries/data/subdivisions/NP.yaml +9 -0
  419. data/lib/countries/data/subdivisions/NR.yaml +19 -0
  420. data/lib/countries/data/subdivisions/NZ.yaml +34 -0
  421. data/lib/countries/data/subdivisions/OM.yaml +10 -0
  422. data/lib/countries/data/subdivisions/PA.yaml +27 -0
  423. data/lib/countries/data/subdivisions/PE.yaml +24 -0
  424. data/lib/countries/data/subdivisions/PG.yaml +46 -0
  425. data/lib/countries/data/subdivisions/PH.yaml +293 -0
  426. data/lib/countries/data/subdivisions/PK.yaml +22 -0
  427. data/lib/countries/data/subdivisions/PL.yaml +141 -0
  428. data/lib/countries/data/subdivisions/PS.yaml +41 -0
  429. data/lib/countries/data/subdivisions/PT.yaml +36 -0
  430. data/lib/countries/data/subdivisions/PW.yaml +24 -0
  431. data/lib/countries/data/subdivisions/PY.yaml +22 -1
  432. data/lib/countries/data/subdivisions/QA.yaml +26 -0
  433. data/lib/countries/data/subdivisions/RO.yaml +189 -0
  434. data/lib/countries/data/subdivisions/RS.yaml +112 -0
  435. data/lib/countries/data/subdivisions/RU.yaml +123 -0
  436. data/lib/countries/data/subdivisions/RW.yaml +7 -0
  437. data/lib/countries/data/subdivisions/SA.yaml +38 -0
  438. data/lib/countries/data/subdivisions/SB.yaml +11 -0
  439. data/lib/countries/data/subdivisions/SC.yaml +45 -0
  440. data/lib/countries/data/subdivisions/SD.yaml +15 -0
  441. data/lib/countries/data/subdivisions/SE.yaml +42 -0
  442. data/lib/countries/data/subdivisions/SG.yaml +8 -0
  443. data/lib/countries/data/subdivisions/SH.yaml +6 -0
  444. data/lib/countries/data/subdivisions/SI.yaml +735 -0
  445. data/lib/countries/data/subdivisions/SK.yaml +22 -0
  446. data/lib/countries/data/subdivisions/SL.yaml +7 -0
  447. data/lib/countries/data/subdivisions/SM.yaml +19 -0
  448. data/lib/countries/data/subdivisions/SN.yaml +43 -0
  449. data/lib/countries/data/subdivisions/SO.yaml +71 -0
  450. data/lib/countries/data/subdivisions/SR.yaml +17 -0
  451. data/lib/countries/data/subdivisions/SS.yaml +4 -0
  452. data/lib/countries/data/subdivisions/ST.yaml +127 -0
  453. data/lib/countries/data/subdivisions/SV.yaml +20 -0
  454. data/lib/countries/data/subdivisions/SY.yaml +53 -0
  455. data/lib/countries/data/subdivisions/SZ.yaml +18 -0
  456. data/lib/countries/data/subdivisions/TD.yaml +51 -0
  457. data/lib/countries/data/subdivisions/TG.yaml +13 -0
  458. data/lib/countries/data/subdivisions/TH.yaml +231 -0
  459. data/lib/countries/data/subdivisions/TJ.yaml +16 -1
  460. data/lib/countries/data/subdivisions/TL.yaml +38 -0
  461. data/lib/countries/data/subdivisions/TM.yaml +16 -1
  462. data/lib/countries/data/subdivisions/TN.yaml +25 -0
  463. data/lib/countries/data/subdivisions/TO.yaml +1 -0
  464. data/lib/countries/data/subdivisions/TR.yaml +93 -0
  465. data/lib/countries/data/subdivisions/TT.yaml +25 -0
  466. data/lib/countries/data/subdivisions/TV.yaml +25 -0
  467. data/lib/countries/data/subdivisions/TW.yaml +106 -0
  468. data/lib/countries/data/subdivisions/TZ.yaml +38 -0
  469. data/lib/countries/data/subdivisions/UA.yaml +108 -1
  470. data/lib/countries/data/subdivisions/UG.yaml +262 -0
  471. data/lib/countries/data/subdivisions/UM.yaml +4 -0
  472. data/lib/countries/data/subdivisions/US.yaml +166 -4
  473. data/lib/countries/data/subdivisions/UY.yaml +27 -0
  474. data/lib/countries/data/subdivisions/UZ.yaml +78 -1
  475. data/lib/countries/data/subdivisions/VC.yaml +6 -0
  476. data/lib/countries/data/subdivisions/VE.yaml +33 -0
  477. data/lib/countries/data/subdivisions/VN.yaml +131 -0
  478. data/lib/countries/data/subdivisions/VU.yaml +8 -0
  479. data/lib/countries/data/subdivisions/WS.yaml +18 -0
  480. data/lib/countries/data/subdivisions/YE.yaml +16 -0
  481. data/lib/countries/data/subdivisions/ZA.yaml +5 -0
  482. data/lib/countries/data/subdivisions/ZM.yaml +24 -0
  483. data/lib/countries/data/subdivisions/ZW.yaml +21 -0
  484. data/lib/countries/data/translations/countries-ab.yaml +1 -1
  485. data/lib/countries/data/translations/countries-ak.yaml +1 -1
  486. data/lib/countries/data/translations/countries-an.yaml +1 -1
  487. data/lib/countries/data/translations/countries-ar.yaml +1 -1
  488. data/lib/countries/data/translations/countries-ay.yaml +1 -1
  489. data/lib/countries/data/translations/countries-ba.yaml +1 -1
  490. data/lib/countries/data/translations/countries-bi.yaml +1 -1
  491. data/lib/countries/data/translations/countries-ch.yaml +1 -1
  492. data/lib/countries/data/translations/countries-de.yaml +2 -2
  493. data/lib/countries/data/translations/countries-ee.yaml +1 -1
  494. data/lib/countries/data/translations/countries-en.yaml +1 -1
  495. data/lib/countries/data/translations/countries-fr.yaml +7 -7
  496. data/lib/countries/data/translations/countries-gn.yaml +2 -2
  497. data/lib/countries/data/translations/countries-ja.yaml +4 -4
  498. data/lib/countries/data/translations/countries-ki.yaml +1 -1
  499. data/lib/countries/data/translations/countries-kl.yaml +1 -1
  500. data/lib/countries/data/translations/countries-lt.yaml +2 -2
  501. data/lib/countries/data/translations/countries-pt_BR.yaml +1 -1
  502. data/lib/countries/data/translations/countries-sd.yaml +1 -1
  503. data/lib/countries/data/translations/countries-sw.yaml +1 -1
  504. data/lib/countries/data/translations/countries-th.yaml +2 -2
  505. data/lib/countries/data/translations/countries-tk.yaml +88 -88
  506. data/lib/countries/data/translations/countries-tl.yaml +1 -1
  507. data/lib/countries/data/translations/countries-ve.yaml +1 -1
  508. data/lib/countries/data/translations/countries-xh.yaml +1 -1
  509. data/lib/countries/data.rb +31 -43
  510. data/lib/countries/global.rb +0 -1
  511. data/lib/countries/iso3166.rb +3 -1
  512. data/lib/countries/sources/cldr/subdivision.rb +1 -1
  513. data/lib/countries/structure.rb +1 -0
  514. data/lib/countries/subdivision.rb +5 -0
  515. data/lib/countries/tasks/postal_codes.rake +6 -2
  516. data/lib/countries/version.rb +1 -1
  517. data/lib/countries.rb +0 -2
  518. metadata +25 -44
  519. data/.github/workflows/codeql-analysis.yml +0 -70
  520. data/.github/workflows/tests.yml +0 -35
  521. data/.gitignore +0 -26
  522. data/.rspec +0 -2
  523. data/.rubocop.yml +0 -40
  524. data/.rubocop_todo.yml +0 -19
  525. data/CHANGELOG.md +0 -663
  526. data/Gemfile +0 -16
  527. data/LICENSE +0 -24
  528. data/README.markdown +0 -346
  529. data/Rakefile +0 -63
  530. data/UPGRADE.md +0 -39
  531. data/bin/console +0 -15
  532. data/countries.gemspec +0 -30
  533. data/lib/countries/kwarg_struct.rb +0 -14
  534. data/lib/countries/tasks/geocoding.rake +0 -106
  535. data/spec/00_global_spec.rb +0 -58
  536. data/spec/configuration_spec.rb +0 -60
  537. data/spec/country_spec.rb +0 -1131
  538. data/spec/data_spec.rb +0 -245
  539. data/spec/mongoid_spec.rb +0 -61
  540. data/spec/perf_spec.rb +0 -74
  541. data/spec/spec_helper.rb +0 -15
  542. data/spec/subdivision_spec.rb +0 -34
  543. data/spec/thread_safety_spec.rb +0 -47
  544. data/spec/timezone_spec.rb +0 -34
data/spec/country_spec.rb DELETED
@@ -1,1131 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- NUM_OF_COUNTRIES = 249
5
- describe ISO3166::Country do
6
- before { ISO3166.configuration.enable_currency_extension! }
7
- let(:country) { ISO3166::Country.search('US') }
8
-
9
- it 'allows to create a country object from a symbol representation of the alpha2 code' do
10
- country = described_class.new(:us)
11
- expect(country.data).not_to be_nil
12
- end
13
-
14
- it 'allows to create a country object from a lowercase alpha2 code' do
15
- country = described_class.new('us')
16
- expect(country.data).not_to be_nil
17
- end
18
-
19
- it 'allows countries to be compared' do
20
- c1 = ISO3166::Country.new('US')
21
- c2 = ISO3166::Country.new('US')
22
- c3 = ISO3166::Country.new('AU')
23
- expect(c1).to eq(c2)
24
- expect(c1).to_not eq(nil)
25
- expect(c1.hash).to eq(c2.hash)
26
- expect(c3.hash).to_not eq(c2.hash)
27
-
28
- hsh = {}
29
- hsh[c1] = 1
30
- hsh[c2] = 2
31
- expect(hsh.keys.count).to eq 1
32
- end
33
-
34
- it 'should return 3166 number' do
35
- expect(country.number).to eq('840')
36
- end
37
-
38
- it 'should return 3166 alpha2 code' do
39
- expect(country.alpha2).to eq('US')
40
- end
41
-
42
- it 'should return 3166 alpha3 code' do
43
- expect(country.alpha3).to eq('USA')
44
- end
45
-
46
- it 'should return 3166 iso_short_name' do
47
- expect(country.iso_short_name).to eq('United States of America')
48
- end
49
-
50
- it 'should return alternate names' do
51
- expect(country.unofficial_names).to eq(['United States', 'USA', 'Murica',
52
- 'Vereinigte Staaten von Amerika', 'Γ‰tats-Unis',
53
- 'Estados Unidos', 'をパγƒͺγ‚«εˆθ‘†ε›½', 'Verenigde Staten'])
54
- end
55
-
56
- it 'should return translations' do
57
- expect(country.translations).to be
58
- expect(country.translations['en']).to eq('United States')
59
- end
60
-
61
- it 'should return latitude' do
62
- expect(country.latitude).to eq(37.09024)
63
- end
64
-
65
- it 'should return longitude' do
66
- expect(country.longitude).to eq(-95.712891)
67
- end
68
-
69
- it 'should return bounds' do
70
- expect(country.bounds['northeast']['lat']).to eq(71.3577635769)
71
- end
72
-
73
- it 'should return continent' do
74
- expect(country.continent).to eq('North America')
75
- end
76
-
77
- it 'knows about whether or not the country uses postal codes' do
78
- expect(country.zip).to be_truthy
79
- end
80
-
81
- it 'knows when a country does not require postal codes' do
82
- antarctica = ISO3166::Country.search('AQ')
83
- expect(antarctica.postal_code).to eq(false)
84
- end
85
-
86
- it 'knows about the country postal code format' do
87
- expect(country.postal_code_format).to_not be_nil
88
-
89
- regex = Regexp.new(country.postal_code_format)
90
- expect(regex).to match('12345-6789')
91
-
92
- antarctica = ISO3166::Country.search('AQ')
93
- expect(antarctica.postal_code_format).to be_nil
94
- end
95
-
96
- it 'should return region' do
97
- expect(country.region).to eq('Americas')
98
- end
99
-
100
- it 'should return subregion' do
101
- expect(country.subregion).to eq('Northern America')
102
- end
103
-
104
- it 'should return world region' do
105
- expect(country.world_region).to eq('AMER')
106
- end
107
-
108
- context 'with Turkey' do
109
- let(:country) { ISO3166::Country.search('TR') }
110
-
111
- it 'should indicate EMEA as the world region' do
112
- expect(country.world_region).to eq('EMEA')
113
- end
114
- end
115
-
116
- context 'with Japan' do
117
- let(:country) { ISO3166::Country.search('JP') }
118
-
119
- it 'should indicate APAC as the world region' do
120
- expect(country.world_region).to eq('APAC')
121
- end
122
- end
123
-
124
- context 'with Belgium' do
125
- let(:country) { ISO3166::Country.search('BE') }
126
-
127
- it 'should return its local names based on its languages' do
128
- expect(country.local_names).to match_array(%w[BelgiΓ« Belgique Belgien])
129
- end
130
-
131
- it 'should return its first local name' do
132
- expect(country.local_name).to eq('BelgiΓ«')
133
- end
134
- end
135
-
136
- context 'with Brazil' do
137
- context 'with pt-BR translation' do
138
- before do
139
- ISO3166::Data.register(
140
- alpha2: 'BR2',
141
- iso_short_name: 'Brazil',
142
- languages_official: %w(pt-BR),
143
- translations: {
144
- 'pt-BR' => 'Translation for pt-BR',
145
- 'pt' => 'Translation for pt'
146
- }
147
- )
148
- end
149
-
150
- let(:country) { ISO3166::Country.search('BR2') }
151
-
152
- it 'should return its local name based on its language' do
153
- expect(country.local_names).to match_array(['Translation for pt-BR'])
154
- end
155
-
156
- after do
157
- ISO3166::Data.unregister('BR2')
158
- end
159
- end
160
-
161
- context 'without pt-BR translation' do
162
- before do
163
- ISO3166::Data.register(
164
- alpha2: 'BR2',
165
- iso_short_name: 'Brazil',
166
- languages_official: %w(pt-BR),
167
- translations: {
168
- 'pt' => 'Translation for pt'
169
- }
170
- )
171
- end
172
-
173
- let(:country) { ISO3166::Country.search('BR2') }
174
-
175
- it 'should return its local name based on its language' do
176
- expect(country.local_names).to match_array(['Translation for pt'])
177
- end
178
-
179
- after do
180
- ISO3166::Data.unregister('BR2')
181
- end
182
- end
183
- end
184
-
185
- it 'should return ioc code' do
186
- expect(country.ioc).to eq('USA')
187
- end
188
-
189
- it 'should return UN/LOCODE' do
190
- expect(country.un_locode).to eq('US')
191
- end
192
-
193
- it 'should be identical to itself' do
194
- expect(country).to eq(ISO3166::Country.search('US'))
195
- end
196
-
197
- it 'should return language' do
198
- expect(country.languages[0]).to eq('en')
199
- end
200
-
201
- describe 'e164' do
202
- it 'should return country_code' do
203
- expect(country.country_code).to eq('1')
204
- end
205
-
206
- it 'should return national_destination_code_lengths' do
207
- expect(country.national_destination_code_lengths).to eq([3])
208
- end
209
-
210
- it 'should return national_number_lengths' do
211
- expect(country.national_number_lengths).to eq([10])
212
- end
213
-
214
- it 'should return international_prefix' do
215
- expect(country.international_prefix).to eq('011')
216
- end
217
-
218
- it 'should return national_prefix' do
219
- expect(country.national_prefix).to eq('1')
220
- end
221
- end
222
-
223
- describe 'subdivisions' do
224
- let(:virginia) { country.subdivisions['VA'] }
225
- it 'should return an empty hash for a country with no ISO3166-2' do
226
- expect(ISO3166::Country.search('VA').subdivisions.size).to eq(0)
227
- end
228
-
229
- it 'should return a hash with all sub divisions' do
230
- expect(country.subdivisions.size).to eq(57)
231
- end
232
-
233
- it '#states should be deprecated' do
234
- expect {country.states}.to output.to_stderr
235
- end
236
-
237
- it 'should be a subdivision object' do
238
- expect(virginia).to be_a(ISO3166::Subdivision)
239
- end
240
-
241
- it 'should have a name' do
242
- expect(virginia.name).to eq('Virginia')
243
- end
244
-
245
- it 'should have a code' do
246
- expect(virginia.code).to eq('VA')
247
- end
248
-
249
- it 'should behave like a hash' do
250
- expect(virginia['name']).to eq('Virginia')
251
- end
252
- end
253
-
254
- describe 'subdivision_types' do
255
- it "should return an array of subdivision types" do
256
- expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
257
- end
258
-
259
- it "should return an array of subdivision types even if there is only a single type" do
260
- expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
261
- end
262
-
263
- it "should return an empty array if country has no subdivisions" do
264
- expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
265
- expect(ISO3166::Country['AS'].subdivision_types).to eq([])
266
- end
267
- end
268
-
269
- describe 'subdivisions_of_types' do
270
- it "given a single type, should return an array of subdivisions that match the type" do
271
- us_states = country.subdivisions_of_types(%w[state])
272
- expect(us_states.size).to eq(50)
273
- dc = country.subdivisions_of_types(%w[district])
274
- expect(dc.size).to eq(1)
275
- end
276
-
277
- it "given multiple types, should return an array of subdivisions matching the types" do
278
- us_states_plus_dc = country.subdivisions_of_types(%w[state district])
279
- expect(us_states_plus_dc.size).to eq(51)
280
- end
281
-
282
- it "given multiple types where at least one does not exist for that country, should work without issue" do
283
- us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
284
- expect(us_states_plus_dc.size).to eq(51)
285
- end
286
-
287
- it "given only types that do not exist for that country, should return an empty collection" do
288
- should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
289
- expect(should_be_empty).to be_empty
290
- end
291
- end
292
-
293
- describe 'humanized_subdivision_types' do
294
- it "should return an array of humanized subdivision types" do
295
- expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
296
- end
297
-
298
- it "should return an array of subdivision types even if there is only a single type" do
299
- expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
300
- end
301
-
302
- it "should return an empty array if country has no subdivisions" do
303
- expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
304
- expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
305
- end
306
- end
307
-
308
- describe 'subdivision_names_with_codes' do
309
- it 'should return an alphabetized list of all subdivisions names with codes' do
310
- subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
311
- expect(subdivisions).to be_an(Array)
312
- expect(subdivisions.first[0]).to be_a(String)
313
- expect(subdivisions.size).to eq(27)
314
- expect(subdivisions.first[0]).to eq('Alexandria')
315
- end
316
-
317
- it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
318
- ISO3166.configuration.locales = %i[es de en]
319
-
320
- subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes(:es)
321
- expect(subdivisions).to be_an(Array)
322
- expect(subdivisions.first[0]).to be_a(String)
323
- expect(subdivisions.size).to eq(27)
324
- expect(subdivisions.first[0]).to eq('Al Iskandariyah')
325
- end
326
- end
327
-
328
- describe 'valid?' do
329
- it 'should return true if country is valid' do
330
- expect(ISO3166::Country.new('US')).to be_valid
331
- end
332
-
333
- it 'should return false if country is invalid' do
334
- expect(ISO3166::Country.new({})).not_to be_valid
335
- end
336
- end
337
-
338
- describe 'new' do
339
- it 'should return new country object when a valid alpha2 string is passed' do
340
- expect(ISO3166::Country.new('US')).to be_a(ISO3166::Country)
341
- end
342
-
343
- it 'should return nil when an invalid alpha2 string is passed' do
344
- expect(ISO3166::Country.new('fubar')).to be_nil
345
- end
346
-
347
- it 'should return new country object when a valid alpha2 symbol is passed' do
348
- expect(ISO3166::Country.new(:us)).to be_a(ISO3166::Country)
349
- end
350
-
351
- it 'should return nil when an invalid alpha2 symbol is passed' do
352
- expect(ISO3166::Country.new(:fubar)).to be_nil
353
- end
354
- end
355
-
356
- describe 'compare' do
357
- it 'should compare itself with other countries by its name' do
358
- canada = ISO3166::Country.search('CA')
359
- mexico = ISO3166::Country.search('MX')
360
- expect(mexico <=> canada).to eq(1)
361
- expect(canada <=> mexico).to eq(-1)
362
- end
363
- end
364
-
365
- describe 'all' do
366
- it 'should return an array list of all countries' do
367
- countries = ISO3166::Country.all
368
- expect(countries).to be_an(Array)
369
- expect(countries.first).to be_an(ISO3166::Country)
370
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
371
- end
372
-
373
- it 'should allow to customize each country representation passing a block to the method' do
374
- countries = ISO3166::Country.all { |country, data| [data['iso_short_name'], country, data['country_code']] }
375
- expect(countries).to be_an(Array)
376
- expect(countries.first).to be_an(Array)
377
- expect(countries.first.size).to eq(3)
378
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
379
- end
380
- end
381
-
382
- describe 'all_translated' do
383
- it 'should return an alphabetized list of all country names translated to the selected locale' do
384
- countries = ISO3166::Country.all_translated('fr')
385
- expect(countries).to be_an(Array)
386
- expect(countries.first).to be_a(String)
387
- expect(countries.first).to eq('Andorre')
388
- # countries missing the desired locale will not be added to the list
389
- # so all 250 countries may not be returned, 'fr' returns 249, for example
390
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
391
- end
392
-
393
- it 'should return an alphabetized list of all country names in English if no locale is passed' do
394
- countries = ISO3166::Country.all_translated
395
- expect(countries).to be_an(Array)
396
- expect(countries.first).to be_a(String)
397
- expect(countries.first).to eq('Andorra')
398
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
399
- end
400
-
401
- context 'with custom countries' do
402
- before do
403
- ISO3166::Data.register(
404
- alpha2: 'XX',
405
- iso_short_name: 'Custom Country',
406
- translations: { 'en' => 'Custom Country' }
407
- )
408
- end
409
-
410
- it 'should include custom registered countries' do
411
- custom_country = ISO3166::Country.find_by_alpha2('XX')[1]
412
- countries = ISO3166::Country.all_translated
413
- expect(countries).to include(custom_country['iso_short_name'])
414
- end
415
-
416
- after do
417
- ISO3166::Data.unregister('XX')
418
- end
419
- end
420
- end
421
-
422
- describe 'all_names_with_codes' do
423
- require 'active_support/core_ext/string/output_safety'
424
- it 'should return an alphabetized list of all country names with ISOCODE alpha2' do
425
- countries = ISO3166::Country.all_names_with_codes
426
- expect(countries).to be_an(Array)
427
- expect(countries.first[0]).to be_a(String)
428
- expect(countries.first[0]).to eq('Afghanistan')
429
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
430
- expect(countries.any? { |pair| !pair[0].html_safe? }).to eq(false)
431
- end
432
-
433
- it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
434
- ISO3166.configuration.locales = %i[es de en]
435
-
436
- countries = ISO3166::Country.all_names_with_codes(:es)
437
- expect(countries).to be_an(Array)
438
- expect(countries.first[0]).to be_a(String)
439
- expect(countries.first[0]).to eq('AfganistΓ‘n')
440
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
441
- end
442
- end
443
-
444
- describe 'all_names_with_codes_without_active_support' do
445
- it 'should return an alphabetized list of all country names with ISOCODE alpha2' do
446
- countries = ISO3166::Country.all_names_with_codes
447
- expect(countries).to be_an(Array)
448
- expect(countries.first[0]).to be_a(String)
449
- expect(countries.first[0]).to eq('Afghanistan')
450
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
451
- end
452
-
453
- it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
454
- ISO3166.configuration.locales = %i[es de en]
455
-
456
- countries = ISO3166::Country.all_names_with_codes(:es)
457
- expect(countries).to be_an(Array)
458
- expect(countries.first[0]).to be_a(String)
459
- expect(countries.first[0]).to eq('AfganistΓ‘n')
460
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
461
- end
462
- end
463
-
464
- describe 'translation' do
465
- it 'should return the localized name for a country to the selected locale' do
466
- ISO3166.configuration.locales = %i[es de en]
467
- countries = ISO3166::Country.new(:de).translation('de')
468
- expect(countries).to be_an(String)
469
- expect(countries).to eq('Deutschland')
470
- end
471
-
472
- it 'should return the localized name for a country in English' do
473
- countries = ISO3166::Country.new(:de).translation
474
- expect(countries).to be_an(String)
475
- expect(countries).to eq('Germany')
476
- end
477
-
478
- it 'should return nil when a translation is not found' do
479
- countries = ISO3166::Country.new(:de).translation('xxx')
480
- expect(countries).to be_nil
481
- end
482
-
483
- context 'should return variant locales' do
484
- it 'should return different value for Chinese variants' do
485
- ISO3166.configuration.locales = %i[zh-cn zh-hk zh-tw]
486
- name_cn = ISO3166::Country['TW'].translation('zh-cn')
487
- name_hk = ISO3166::Country['TW'].translation('zh-hk')
488
- name_tw = ISO3166::Country['TW'].translation('zh-tw')
489
- expect([name_cn, name_hk, name_tw].uniq.size).to eql 3
490
- end
491
-
492
- it 'should return different value for Portuguese variants' do
493
- ISO3166.configuration.locales = %i[pt pt-br]
494
- name_pt = ISO3166::Country['SG'].translation('pt')
495
- name_br = ISO3166::Country['SG'].translation('pt-br')
496
- expect([name_pt, name_br].uniq.size).to eql 2
497
- end
498
- end
499
- end
500
-
501
- describe 'translations' do
502
- it 'should return an hash of all country names translated to the selected locale' do
503
- countries = ISO3166::Country.translations('fr')
504
- expect(countries).to be_an(Hash)
505
- expect(countries.first[0]).to eq('AD')
506
- expect(countries.first).to eq(%w[AD Andorre])
507
- # countries missing the desired locale will not be added to the list
508
- # so all 250 countries may not be returned, 'fr' returns 249, for example
509
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
510
- end
511
-
512
- it 'should return an hash of all country names in English if no locale is passed' do
513
- countries = ISO3166::Country.translations
514
- expect(countries).to be_an(Hash)
515
- expect(countries.first[0]).to eq('AD')
516
- expect(countries.first).to eq(%w[AD Andorra])
517
- expect(countries.size).to eq(NUM_OF_COUNTRIES)
518
- end
519
- end
520
-
521
- describe 'countries' do
522
- it 'should be the same as all' do
523
- expect(ISO3166::Country.countries).to eq(ISO3166::Country.all)
524
- end
525
- end
526
-
527
- describe 'search' do
528
- it 'should return new country object when a valid alpha2 string is passed' do
529
- expect(ISO3166::Country.search('US')).to be_a(ISO3166::Country)
530
- end
531
-
532
- it 'should return nil when an invalid alpha2 string is passed' do
533
- expect(ISO3166::Country.search('fubar')).to be_nil
534
- end
535
-
536
- it 'should return new country object when a valid alpha2 symbol is passed' do
537
- expect(ISO3166::Country.search(:us)).to be_a(ISO3166::Country)
538
- end
539
-
540
- it 'should return nil when an invalid alpha2 symbol is passed' do
541
- expect(ISO3166::Country.search(:fubar)).to be_nil
542
- end
543
- end
544
-
545
- describe 'currency' do
546
- it 'should return an instance of Currency' do
547
- expect(country.currency).to be_a(Money::Currency)
548
- end
549
-
550
- it 'should allow access to symbol' do
551
- expect(country.currency.symbol).to eq('$')
552
- end
553
- end
554
-
555
- describe 'codes' do
556
- it 'returns a hash with the data of the country' do
557
- expect(ISO3166::Country.codes).to be_a Array
558
- expect(ISO3166::Country.codes.size).to eq(NUM_OF_COUNTRIES)
559
- end
560
- end
561
-
562
- describe 'find_all_by' do
563
- context 'when searchead attribute equals the given value' do
564
- let(:spain_data) { ISO3166::Country.find_all_by('alpha2', 'ES') }
565
-
566
- it 'returns a hash with the data of the country' do
567
- expect(spain_data).to be_a Hash
568
- expect(spain_data.keys.size).to eq(1)
569
- end
570
- end
571
-
572
- context 'when searchead attribute is list and one of its elements equals the given value' do
573
- let(:spain_data) { ISO3166::Country.find_all_by('languages', 'en') }
574
-
575
- it 'returns a hash with the data of the country' do
576
- expect(spain_data).to be_a Hash
577
- expect(spain_data.size).to be > 1
578
- end
579
- end
580
-
581
- it 'also finds results if the given values is not upcased/downcased properly' do
582
- spain_data = ISO3166::Country.find_all_by('alpha2', 'es')
583
- expect(spain_data).to be_a Hash
584
- expect(spain_data.keys.size).to eq(1)
585
- end
586
-
587
- it 'also finds results if the attribute is given as a symbol' do
588
- spain_data = ISO3166::Country.find_all_by(:alpha2, 'ES')
589
- expect(spain_data).to be_a Hash
590
- expect(spain_data.keys.size).to eq(1)
591
- end
592
-
593
- it 'casts the given value to a string to perform the search' do
594
- spain_data = ISO3166::Country.find_all_by(:country_code, 34)
595
- expect(spain_data).to be_a Hash
596
- expect(spain_data.keys).to eq(['ES'])
597
- end
598
-
599
- it 'also performs searches with regexps and forces it to ignore case' do
600
- spain_data = ISO3166::Country.find_all_by(:unofficial_names, /EspaΓ±/)
601
- expect(spain_data).to be_a Hash
602
- expect(spain_data.keys).to eq(['ES'])
603
- end
604
-
605
- it 'performs reasonably' do
606
- start = Time.now
607
- 250.times do
608
- lookup = ['ZM', 'ZMB', 'Zambia', 'US', 'USA', 'United States'].sample
609
- case lookup.length
610
- when 2 then ISO3166::Country.find_all_by(:alpha2, lookup)
611
- when 3 then ISO3166::Country.find_all_by(:alpha3, lookup)
612
- else ISO3166::Country.find_all_by(:iso_short_name, lookup)
613
- end
614
- end
615
- expect(Time.now - start).to be < 1
616
- end
617
- end
618
-
619
- describe 'hash finder methods' do
620
- context "when search name in 'iso_short_name'" do
621
- subject { ISO3166::Country.find_by_iso_short_name('Poland') }
622
- it 'should return' do
623
- expect(subject.first).to eq('PL')
624
- end
625
- end
626
-
627
- context "when search lowercase name in 'iso_short_name'" do
628
- subject { ISO3166::Country.find_by_iso_short_name('poland') }
629
- it 'should return' do
630
- expect(subject.first).to eq('PL')
631
- end
632
- end
633
-
634
- context "when search name with comma in 'iso_short_name'" do
635
- subject { ISO3166::Country.find_by_iso_short_name(country_name) }
636
-
637
- context 'with Republic of Korea' do
638
- let(:country_name) { 'Korea, Republic of' }
639
- it 'should return' do
640
- expect(subject.first).to eq('KR')
641
- end
642
- end
643
-
644
- context 'with Bolivia' do
645
- let(:country_name) { 'Bolivia, Plurinational State of' }
646
- it 'should return' do
647
- expect(subject.first).to eq('BO')
648
- end
649
- end
650
-
651
- context 'with Bonaire' do
652
- let(:country_name) { 'Bonaire, Sint Eustatius and Saba' }
653
- it 'should return' do
654
- expect(subject.first).to eq('BQ')
655
- end
656
- end
657
- end
658
-
659
- context 'when search lowercase multibyte name found' do
660
- subject { ISO3166::Country.find_country_by_unofficial_names('россия') }
661
-
662
- it 'should be a country instance' do
663
- expect(subject).to be_a(ISO3166::Country)
664
- expect(subject.alpha2).to eq('RU')
665
- end
666
- end
667
-
668
- context 'when search lowercase multibyte name found' do
669
- subject { ISO3166::Country.find_country_by_unofficial_names(/россия/) }
670
-
671
- it 'should be a country instance' do
672
- expect(subject).to be_a(ISO3166::Country)
673
- expect(subject.alpha2).to eq('RU')
674
- end
675
- end
676
-
677
- context 'when accents are not used' do
678
- subject { ISO3166::Country.find_country_by_unofficial_names('emirats Arabes Unis') }
679
-
680
- it 'should be a country instance' do
681
- expect(subject).to be_a(ISO3166::Country)
682
- expect(subject.alpha2).to eq('AE')
683
- end
684
- end
685
-
686
- context "when search name in 'unofficial_names'" do
687
- subject { ISO3166::Country.find_by_unofficial_names('Polonia') }
688
- it 'should return' do
689
- expect(subject.first).to eq('PL')
690
- end
691
- end
692
-
693
- context "when search name in 'translated_names'" do
694
- before do
695
- ISO3166.configure do |config|
696
- config.locales = [:bs]
697
- end
698
- end
699
- subject { ISO3166::Country.find_by_translated_names('Poljska') }
700
- it 'should return' do
701
- expect(subject.first).to eq('PL')
702
- end
703
- end
704
-
705
- context 'when finding by invalid attribute' do
706
- it 'should raise an error' do
707
- expect { ISO3166::Country.find_by_invalid('invalid') }.to(
708
- raise_error(RuntimeError, "Invalid attribute name 'invalid'")
709
- )
710
- end
711
- end
712
-
713
- context 'when using find_all method' do
714
- let(:list) { ISO3166::Country.find_all_by_currency('USD') }
715
-
716
- it 'should be an Array of Arrays' do
717
- expect(list).to be_a(Array)
718
- expect(list.first).to be_a(Array)
719
- end
720
- end
721
-
722
- context 'when using find_by method' do
723
- subject { ISO3166::Country.find_by_alpha3('CAN') }
724
- it 'should return' do
725
- expect(subject.length).to eq 2
726
- expect(subject.first).to be_a(String)
727
- expect(subject.last).to be_a(Hash)
728
- end
729
- end
730
- end
731
-
732
- describe 'country finder methods' do
733
- context 'when search name found' do
734
- let(:uk) { ISO3166::Country.find_country_by_unofficial_names('United Kingdom') }
735
-
736
- it 'should be a country instance' do
737
- expect(uk).to be_a(ISO3166::Country)
738
- expect(uk.alpha2).to eq('GB')
739
- end
740
- end
741
-
742
- context 'when search lowercase name found' do
743
- let(:uk) { ISO3166::Country.find_country_by_unofficial_names('united kingdom') }
744
-
745
- it 'should be a country instance' do
746
- expect(uk).to be_a(ISO3166::Country)
747
- expect(uk.alpha2).to eq('GB')
748
- end
749
- end
750
-
751
- context 'when the search term contains comma' do
752
- let(:korea) { ISO3166::Country.find_country_by_unofficial_names('Korea, Republic of') }
753
-
754
- it 'should be a country instance' do
755
- expect(korea).to be_a(ISO3166::Country)
756
- expect(korea.alpha2).to eq('KR')
757
- end
758
- end
759
-
760
- context 'when search translation found' do
761
- before do
762
- ISO3166.configure do |config|
763
- config.locales = [:bs]
764
- end
765
- end
766
- let(:uk) { ISO3166::Country.find_country_by_translated_names('Velika Britanija') }
767
-
768
- it 'should be a country instance' do
769
- expect(uk).to be_a(ISO3166::Country)
770
- expect(uk.alpha2).to eq('GB')
771
- end
772
- end
773
-
774
- describe '#find_country_by_any_name' do
775
- context 'when search name found' do
776
- let(:uk) { ISO3166::Country.find_country_by_any_name('United Kingdom') }
777
-
778
- it 'should be a country instance' do
779
- expect(uk).to be_a(ISO3166::Country)
780
- expect(uk.alpha2).to eq('GB')
781
- end
782
- end
783
-
784
- context 'when search lowercase name found' do
785
- let(:uk) { ISO3166::Country.find_country_by_any_name('united kingdom') }
786
-
787
- it 'should be a country instance' do
788
- expect(uk).to be_a(ISO3166::Country)
789
- expect(uk.alpha2).to eq('GB')
790
- end
791
- end
792
-
793
- context 'when the search term contains comma' do
794
- let(:korea) { ISO3166::Country.find_country_by_any_name('Korea, Republic of') }
795
-
796
- it 'should be a country instance' do
797
- expect(korea).to be_a(ISO3166::Country)
798
- expect(korea.alpha2).to eq('KR')
799
- end
800
- end
801
-
802
- context 'when search translation found' do
803
- before do
804
- ISO3166.configure do |config|
805
- config.locales = [:bs]
806
- end
807
- end
808
- let(:uk) { ISO3166::Country.find_country_by_any_name('Velika Britanija') }
809
-
810
- it 'should be a country instance' do
811
- expect(uk).to be_a(ISO3166::Country)
812
- expect(uk.alpha2).to eq('GB')
813
- end
814
- end
815
- end
816
-
817
- context 'regression test for #388' do
818
- let(:no_country) { ISO3166::Country.find_country_by_translated_names(nil) }
819
-
820
- it 'should be a country instance' do
821
- expect(no_country).to_not be_a(ISO3166::Country)
822
- expect(no_country).to eq nil
823
- end
824
- end
825
-
826
- context 'when attempting to search by translations hash' do
827
- let(:uk) { ISO3166::Country.find_country_by_translations({}) }
828
-
829
- it 'should be a country instance' do
830
- expect { uk }.to raise_error(RuntimeError)
831
- end
832
- end
833
-
834
- context 'when search name not found' do
835
- let(:bogus) { ISO3166::Country.find_country_by_unofficial_names('Does not exist') }
836
-
837
- it 'should be a country instance' do
838
- expect(bogus).to eq(nil)
839
- end
840
- end
841
-
842
- # Spot checks #243
843
- context 'when search name not found' do
844
- let(:belgium) { ISO3166::Country.find_country_by_unofficial_names('Belgium') }
845
-
846
- it 'should be a country instance' do
847
- expect(belgium.alpha2).to eq('BE')
848
- end
849
- end
850
-
851
- # Spot checks #240
852
- context 'when search name not found' do
853
- let(:canada) { ISO3166::Country.find_country_by_unofficial_names('Canada') }
854
-
855
- it 'should be a country instance' do
856
- expect(canada.alpha2).to eq('CA')
857
- end
858
- end
859
-
860
- # Spot checks #241
861
- context 'when search name not found' do
862
- let(:israel) { ISO3166::Country.find_country_by_unofficial_names('Israel') }
863
-
864
- it 'should be a country instance' do
865
- expect(israel.alpha2).to eq('IL')
866
- end
867
- end
868
-
869
- # Spot checks #241
870
- context 'when search name not found' do
871
- let(:israel) { ISO3166::Country.find_by_iso_short_name('Israel') }
872
-
873
- it 'should be a country instance' do
874
- expect(israel[0]).to eq('IL')
875
- end
876
- end
877
-
878
- # Spot checks #241
879
- context 'when search name not found' do
880
- let(:israel) { ISO3166::Country.find_all_by(:iso_short_name, 'Israel') }
881
-
882
- it 'should be a country instance' do
883
- expect(israel.size).to eq(1)
884
- expect(israel.first[0]).to eq('IL')
885
- end
886
- end
887
-
888
- context 'when finding by invalid attribute' do
889
- it 'should raise an error' do
890
- expect { ISO3166::Country.find_country_by_invalid('invalid') }.to(
891
- raise_error(RuntimeError, "Invalid attribute name 'invalid'")
892
- )
893
- end
894
- end
895
-
896
- context 'when using find_all method' do
897
- let(:list) { ISO3166::Country.find_all_countries_by_currency('USD') }
898
-
899
- it 'should be an Array of Country objects' do
900
- expect(list).to be_a(Array)
901
- expect(list.first).to be_a(ISO3166::Country)
902
- end
903
- end
904
-
905
- context 'when using find_by method' do
906
- let(:country) { ISO3166::Country.find_country_by_alpha3('CAN') }
907
-
908
- it 'should be a single country object' do
909
- expect(country).to be_a(ISO3166::Country)
910
- end
911
- end
912
- end
913
-
914
- describe 'finder methods respond_to_missing?' do
915
- subject { ISO3166::Country.respond_to?(method_name) }
916
- describe 'find_all_by' do
917
- context 'find by a valid Country attribute' do
918
- let(:method_name) { :find_all_by_currency }
919
- it { is_expected.to be true }
920
- end
921
-
922
- context 'find by an invalid attribute' do
923
- let(:method_name) { :find_all_by_invalid }
924
- it { is_expected.to be false }
925
- end
926
- end
927
-
928
- describe 'hash finder methods' do
929
- context 'find by a valid Country attribute' do
930
- let(:method_name) { :find_by_iso_short_name }
931
- it { is_expected.to be true }
932
- end
933
-
934
- context 'find by an invalid attribute' do
935
- let(:method_name) { :find_by_invalid }
936
- it { is_expected.to be false }
937
- end
938
- end
939
-
940
- describe 'country finder methods' do
941
- context 'find country by a valid Country attribute' do
942
- let(:method_name) { :find_country_by_alpha3 }
943
- it { is_expected.to be true }
944
- end
945
-
946
- context 'find by an invalid attribute' do
947
- let(:method_name) { :find_country_by_invalid }
948
- it { is_expected.to be false }
949
- end
950
- end
951
- end
952
-
953
- describe 'Norway' do
954
- let(:norway) { ISO3166::Country.search('NO') }
955
-
956
- it 'should have a currency' do
957
- expect(norway.currency).to be_a(Money::Currency)
958
- end
959
- end
960
-
961
- describe 'Guernsey' do
962
- let(:guernsey) { ISO3166::Country.search('GG') }
963
-
964
- it 'should have a currency' do
965
- expect(guernsey.currency.iso_code).to eq('GBP')
966
- end
967
- end
968
-
969
- describe 'Languages' do
970
- let(:german_speaking_countries) { ISO3166::Country.find_all_countries_by_languages('de') }
971
-
972
- it 'should find countries by language' do
973
- expect(german_speaking_countries.size).to eq(6)
974
- end
975
- end
976
-
977
- describe 'in_eu?' do
978
- let(:netherlands) { ISO3166::Country.search('NL') }
979
-
980
- it 'should return false for countries without eu_member flag' do
981
- expect(country.in_eu?).to be_falsey
982
- end
983
-
984
- it 'should return true for countries with eu_member flag set to true' do
985
- expect(netherlands.in_eu?).to be_truthy
986
- end
987
- end
988
-
989
- describe 'in_eea?' do
990
- let(:netherlands) { ISO3166::Country.search('NL') }
991
-
992
- it 'should return false for countries without eea_member flag' do
993
- expect(country.in_eea?).to be_falsey
994
- end
995
-
996
- it 'should return true for countries with eea_member flag set to true' do
997
- expect(netherlands.in_eea?).to be_truthy
998
- end
999
- end
1000
-
1001
- describe 'in_esm?' do
1002
- let(:netherlands) { ISO3166::Country.search('NL') }
1003
- let(:switzerland) { ISO3166::Country.search('CH') }
1004
-
1005
- it 'should return false for countries without esm_member or eea_member flag' do
1006
- expect(country.in_esm?).to be_falsey
1007
- end
1008
-
1009
- it 'should return true for countries with eea_member flag set to true' do
1010
- expect(netherlands.in_esm?).to be_truthy
1011
- end
1012
-
1013
- it 'should return true for countries with esm_member flag set to true' do
1014
- expect(switzerland.in_esm?).to be_truthy
1015
- end
1016
- end
1017
-
1018
- describe 'gec' do
1019
- it 'should return the country\'s GEC code' do
1020
- expect(ISO3166::Country.new('NA').gec).to eql 'WA'
1021
- end
1022
-
1023
- it 'should return nil if the country does not have a GEC code' do
1024
- expect(ISO3166::Country.new('UM').gec).to eql nil
1025
- end
1026
- end
1027
-
1028
- describe 'to_s' do
1029
- it 'should return the country iso_short_name' do
1030
- expect(ISO3166::Country.new('GB').to_s).to eq('United Kingdom of Great Britain and Northern Ireland')
1031
- end
1032
- end
1033
-
1034
- describe 'VAT rates' do
1035
- let(:belgium) { ISO3166::Country.search('BE') }
1036
-
1037
- it 'should not return a vat_rate for countries without federal VAT' do
1038
- expect(country.vat_rates).to eq(nil)
1039
- end
1040
-
1041
- it 'should contain all keys for vat_rates' do
1042
- expect(belgium.vat_rates).to be_a(Hash)
1043
- expect(belgium.vat_rates.keys).to eq(%w[standard reduced super_reduced parking])
1044
- end
1045
-
1046
- it 'should return an array of reduced vat rates' do
1047
- expect(belgium.vat_rates['reduced']).to be_an(Array)
1048
- expect(belgium.vat_rates['reduced']).to eq([6, 12])
1049
- end
1050
- end
1051
-
1052
- describe 'ISO3166::Country()' do
1053
- it 'should return same object if instance of ISO3166::Country given' do
1054
- expect(ISO3166::Country(country)).to eq country
1055
- end
1056
-
1057
- it 'should return country if instance of String given' do
1058
- expect(ISO3166::Country('us')).to eq country
1059
- end
1060
-
1061
- it 'should return country if not convertable input given' do
1062
- expect do
1063
- ISO3166::Country(42)
1064
- end.to raise_error(TypeError, /can't convert ([A-z]+) into ISO3166::Country/)
1065
- end
1066
- end
1067
-
1068
- describe 'Added country names to search by' do
1069
- it 'should return country code for Democratic Republic of the Congo' do
1070
- expect(ISO3166::Country.find_country_by_unofficial_names('Democratic Republic of the Congo').alpha2).to eq 'CD'
1071
- end
1072
- it 'should return country code for Ivory Coast' do
1073
- expect(ISO3166::Country.find_country_by_unofficial_names('Ivory Coast').alpha2).to eq 'CI'
1074
- end
1075
- it 'should return Pakistan code for Guinea Bissau' do
1076
- expect(ISO3166::Country.find_country_by_unofficial_names('Guinea Bissau').alpha2).to eq 'GW'
1077
- end
1078
- it 'should return Pakistan code for St Kitts and Nevis' do
1079
- expect(ISO3166::Country.find_country_by_unofficial_names('St Kitts and Nevis').alpha2).to eq 'KN'
1080
- end
1081
- it 'should return Pakistan code for St Lucia' do
1082
- expect(ISO3166::Country.find_country_by_unofficial_names('St Lucia').alpha2).to eq 'LC'
1083
- expect(ISO3166::Country.find_country_by_unofficial_names('St. Lucia').alpha2).to eq 'LC'
1084
- end
1085
- it 'should return Pakistan code for Turks and Caicos' do
1086
- expect(ISO3166::Country.find_country_by_unofficial_names('Turks and Caicos').alpha2).to eq 'TC'
1087
- end
1088
- it 'should return Pakistan code for St Vincent Grenadines' do
1089
- expect(ISO3166::Country.find_country_by_unofficial_names('St Vincent Grenadines').alpha2).to eq 'VC'
1090
- expect(ISO3166::Country.find_country_by_unofficial_names('St. Vincent Grenadines').alpha2).to eq 'VC'
1091
- end
1092
- it 'should return country code for Palestinian Authority' do
1093
- expect(ISO3166::Country.find_country_by_unofficial_names('Palestinian Authority').alpha2).to eq 'PS'
1094
- end
1095
- end
1096
-
1097
- describe 'Emoji' do
1098
- it 'has an emoji flag' do
1099
- expect(country.emoji_flag).to eq 'πŸ‡ΊπŸ‡Έ'
1100
- end
1101
- end
1102
-
1103
- describe '#un_locode' do
1104
- let(:countries) { ISO3166::Country.all }
1105
-
1106
- it 'should have two letter un_locode for each country' do
1107
- expect(countries.all? { |country| !country.un_locode.nil? }).to be
1108
- expect(countries.all? { |country| country.un_locode.length == 2 }).to be
1109
- end
1110
- end
1111
-
1112
- describe '.pluck' do
1113
- let(:args) { [] }
1114
-
1115
- subject { ISO3166::Country.pluck(*args) }
1116
-
1117
- it 'returns empty arrays' do
1118
- expect(subject.first).to be_empty
1119
- expect(subject.last).to be_empty
1120
- end
1121
-
1122
- context "when asking for alpha2, alpha3 and iso_short_name" do
1123
- let(:args) { [:alpha2, :alpha3, :iso_short_name] }
1124
-
1125
- it 'returns the correct values' do
1126
- expect(subject.first).to eq(%w[AD AND Andorra])
1127
- expect(subject.last).to eq(%w[ZW ZWE Zimbabwe])
1128
- end
1129
- end
1130
- end
1131
- end