countries 5.1.0 β†’ 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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