countries 3.0.1 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/tests.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +40 -1
  6. data/.rubocop_todo.yml +8 -41
  7. data/CHANGELOG.md +218 -2
  8. data/Gemfile +9 -2
  9. data/LICENSE +3 -1
  10. data/README.markdown +120 -79
  11. data/Rakefile +21 -43
  12. data/bin/console +1 -0
  13. data/countries.gemspec +15 -8
  14. data/lib/countries/cache/countries.json +1 -1
  15. data/lib/countries/cache/locales/ab.json +1 -1
  16. data/lib/countries/cache/locales/af.json +1 -1
  17. data/lib/countries/cache/locales/ak.json +1 -1
  18. data/lib/countries/cache/locales/am.json +1 -1
  19. data/lib/countries/cache/locales/an.json +1 -1
  20. data/lib/countries/cache/locales/ar.json +1 -1
  21. data/lib/countries/cache/locales/as.json +1 -1
  22. data/lib/countries/cache/locales/ay.json +1 -1
  23. data/lib/countries/cache/locales/az.json +1 -1
  24. data/lib/countries/cache/locales/ba.json +1 -1
  25. data/lib/countries/cache/locales/be.json +1 -1
  26. data/lib/countries/cache/locales/bg.json +1 -1
  27. data/lib/countries/cache/locales/bi.json +1 -1
  28. data/lib/countries/cache/locales/bn-in.json +1 -1
  29. data/lib/countries/cache/locales/bn.json +1 -1
  30. data/lib/countries/cache/locales/br.json +1 -1
  31. data/lib/countries/cache/locales/bs.json +1 -1
  32. data/lib/countries/cache/locales/ca.json +1 -1
  33. data/lib/countries/cache/locales/ce.json +1 -1
  34. data/lib/countries/cache/locales/ch.json +1 -1
  35. data/lib/countries/cache/locales/cs.json +1 -1
  36. data/lib/countries/cache/locales/cv.json +1 -1
  37. data/lib/countries/cache/locales/cy.json +1 -1
  38. data/lib/countries/cache/locales/da.json +1 -1
  39. data/lib/countries/cache/locales/de.json +1 -1
  40. data/lib/countries/cache/locales/dv.json +1 -1
  41. data/lib/countries/cache/locales/dz.json +1 -1
  42. data/lib/countries/cache/locales/ee.json +1 -1
  43. data/lib/countries/cache/locales/el.json +1 -1
  44. data/lib/countries/cache/locales/en.json +1 -1
  45. data/lib/countries/cache/locales/eo.json +1 -1
  46. data/lib/countries/cache/locales/es.json +1 -1
  47. data/lib/countries/cache/locales/et.json +1 -1
  48. data/lib/countries/cache/locales/eu.json +1 -1
  49. data/lib/countries/cache/locales/fa.json +1 -1
  50. data/lib/countries/cache/locales/ff.json +1 -1
  51. data/lib/countries/cache/locales/fi.json +1 -1
  52. data/lib/countries/cache/locales/fo.json +1 -1
  53. data/lib/countries/cache/locales/fr.json +1 -1
  54. data/lib/countries/cache/locales/fy.json +1 -1
  55. data/lib/countries/cache/locales/ga.json +1 -1
  56. data/lib/countries/cache/locales/gl.json +1 -1
  57. data/lib/countries/cache/locales/gn.json +1 -1
  58. data/lib/countries/cache/locales/gu.json +1 -1
  59. data/lib/countries/cache/locales/gv.json +1 -1
  60. data/lib/countries/cache/locales/ha.json +1 -1
  61. data/lib/countries/cache/locales/he.json +1 -1
  62. data/lib/countries/cache/locales/hi.json +1 -1
  63. data/lib/countries/cache/locales/hr.json +1 -1
  64. data/lib/countries/cache/locales/ht.json +1 -1
  65. data/lib/countries/cache/locales/hu.json +1 -1
  66. data/lib/countries/cache/locales/hy.json +1 -1
  67. data/lib/countries/cache/locales/ia.json +1 -1
  68. data/lib/countries/cache/locales/id.json +1 -1
  69. data/lib/countries/cache/locales/io.json +1 -1
  70. data/lib/countries/cache/locales/is.json +1 -1
  71. data/lib/countries/cache/locales/it.json +1 -1
  72. data/lib/countries/cache/locales/iu.json +1 -1
  73. data/lib/countries/cache/locales/ja.json +1 -1
  74. data/lib/countries/cache/locales/ka.json +1 -1
  75. data/lib/countries/cache/locales/ki.json +1 -1
  76. data/lib/countries/cache/locales/kk.json +1 -1
  77. data/lib/countries/cache/locales/kl.json +1 -1
  78. data/lib/countries/cache/locales/km.json +1 -1
  79. data/lib/countries/cache/locales/kn.json +1 -1
  80. data/lib/countries/cache/locales/ko.json +1 -1
  81. data/lib/countries/cache/locales/ku.json +1 -1
  82. data/lib/countries/cache/locales/kv.json +1 -1
  83. data/lib/countries/cache/locales/kw.json +1 -1
  84. data/lib/countries/cache/locales/ky.json +1 -1
  85. data/lib/countries/cache/locales/lo.json +1 -1
  86. data/lib/countries/cache/locales/lt.json +1 -1
  87. data/lib/countries/cache/locales/lv.json +1 -1
  88. data/lib/countries/cache/locales/mi.json +1 -1
  89. data/lib/countries/cache/locales/mk.json +1 -1
  90. data/lib/countries/cache/locales/ml.json +1 -1
  91. data/lib/countries/cache/locales/mn.json +1 -1
  92. data/lib/countries/cache/locales/mr.json +1 -1
  93. data/lib/countries/cache/locales/ms.json +1 -1
  94. data/lib/countries/cache/locales/mt.json +1 -1
  95. data/lib/countries/cache/locales/my.json +1 -1
  96. data/lib/countries/cache/locales/na.json +1 -1
  97. data/lib/countries/cache/locales/nb.json +1 -1
  98. data/lib/countries/cache/locales/ne.json +1 -1
  99. data/lib/countries/cache/locales/nl.json +1 -1
  100. data/lib/countries/cache/locales/nn.json +1 -1
  101. data/lib/countries/cache/locales/nv.json +1 -1
  102. data/lib/countries/cache/locales/oc.json +1 -1
  103. data/lib/countries/cache/locales/or.json +1 -1
  104. data/lib/countries/cache/locales/pa.json +1 -1
  105. data/lib/countries/cache/locales/pi.json +1 -1
  106. data/lib/countries/cache/locales/pl.json +1 -1
  107. data/lib/countries/cache/locales/ps.json +1 -1
  108. data/lib/countries/cache/locales/pt-br.json +1 -1
  109. data/lib/countries/cache/locales/pt.json +1 -1
  110. data/lib/countries/cache/locales/ro.json +1 -1
  111. data/lib/countries/cache/locales/ru.json +1 -1
  112. data/lib/countries/cache/locales/rw.json +1 -1
  113. data/lib/countries/cache/locales/sc.json +1 -1
  114. data/lib/countries/cache/locales/sd.json +1 -1
  115. data/lib/countries/cache/locales/si.json +1 -1
  116. data/lib/countries/cache/locales/sk.json +1 -1
  117. data/lib/countries/cache/locales/sl.json +1 -1
  118. data/lib/countries/cache/locales/so.json +1 -1
  119. data/lib/countries/cache/locales/sq.json +1 -1
  120. data/lib/countries/cache/locales/sr.json +1 -1
  121. data/lib/countries/cache/locales/sv.json +1 -1
  122. data/lib/countries/cache/locales/sw.json +1 -1
  123. data/lib/countries/cache/locales/ta.json +1 -1
  124. data/lib/countries/cache/locales/te.json +1 -1
  125. data/lib/countries/cache/locales/tg.json +1 -1
  126. data/lib/countries/cache/locales/th.json +1 -1
  127. data/lib/countries/cache/locales/ti.json +1 -1
  128. data/lib/countries/cache/locales/tk.json +1 -1
  129. data/lib/countries/cache/locales/tl.json +1 -1
  130. data/lib/countries/cache/locales/tr.json +1 -1
  131. data/lib/countries/cache/locales/tt.json +1 -1
  132. data/lib/countries/cache/locales/ug.json +1 -1
  133. data/lib/countries/cache/locales/uk.json +1 -1
  134. data/lib/countries/cache/locales/ur.json +1 -1
  135. data/lib/countries/cache/locales/uz.json +1 -1
  136. data/lib/countries/cache/locales/ve.json +1 -1
  137. data/lib/countries/cache/locales/vi.json +1 -1
  138. data/lib/countries/cache/locales/wa.json +1 -1
  139. data/lib/countries/cache/locales/wo.json +1 -1
  140. data/lib/countries/cache/locales/xh.json +1 -1
  141. data/lib/countries/cache/locales/yo.json +1 -1
  142. data/lib/countries/cache/locales/zh-cn.json +1 -1
  143. data/lib/countries/cache/locales/zh-hk.json +1 -1
  144. data/lib/countries/cache/locales/zh-tw.json +1 -1
  145. data/lib/countries/cache/locales/zh.json +1 -1
  146. data/lib/countries/cache/locales/zu.json +1 -1
  147. data/lib/countries/configuration.rb +15 -0
  148. data/lib/countries/country/class_methods.rb +25 -83
  149. data/lib/countries/country/currency_methods.rb +6 -1
  150. data/lib/countries/country/emoji.rb +5 -3
  151. data/lib/countries/country/finder_methods.rb +81 -0
  152. data/lib/countries/country.rb +115 -7
  153. data/lib/countries/data/countries/AD.yaml +28 -28
  154. data/lib/countries/data/countries/AE.yaml +32 -33
  155. data/lib/countries/data/countries/AF.yaml +32 -32
  156. data/lib/countries/data/countries/AG.yaml +29 -30
  157. data/lib/countries/data/countries/AI.yaml +27 -27
  158. data/lib/countries/data/countries/AL.yaml +29 -29
  159. data/lib/countries/data/countries/AM.yaml +30 -30
  160. data/lib/countries/data/countries/AO.yaml +27 -28
  161. data/lib/countries/data/countries/AQ.yaml +26 -27
  162. data/lib/countries/data/countries/AR.yaml +30 -30
  163. data/lib/countries/data/countries/AS.yaml +31 -31
  164. data/lib/countries/data/countries/AT.yaml +36 -36
  165. data/lib/countries/data/countries/AU.yaml +33 -33
  166. data/lib/countries/data/countries/AW.yaml +25 -26
  167. data/lib/countries/data/countries/AX.yaml +27 -27
  168. data/lib/countries/data/countries/AZ.yaml +30 -30
  169. data/lib/countries/data/countries/BA.yaml +32 -32
  170. data/lib/countries/data/countries/BB.yaml +28 -28
  171. data/lib/countries/data/countries/BD.yaml +28 -28
  172. data/lib/countries/data/countries/BE.yaml +41 -41
  173. data/lib/countries/data/countries/BF.yaml +29 -30
  174. data/lib/countries/data/countries/BG.yaml +36 -36
  175. data/lib/countries/data/countries/BH.yaml +29 -29
  176. data/lib/countries/data/countries/BI.yaml +29 -30
  177. data/lib/countries/data/countries/BJ.yaml +27 -28
  178. data/lib/countries/data/countries/BL.yaml +25 -25
  179. data/lib/countries/data/countries/BM.yaml +29 -29
  180. data/lib/countries/data/countries/BN.yaml +26 -26
  181. data/lib/countries/data/countries/BO.yaml +31 -32
  182. data/lib/countries/data/countries/BQ.yaml +28 -29
  183. data/lib/countries/data/countries/BR.yaml +35 -35
  184. data/lib/countries/data/countries/BS.yaml +27 -28
  185. data/lib/countries/data/countries/BT.yaml +28 -28
  186. data/lib/countries/data/countries/BV.yaml +26 -27
  187. data/lib/countries/data/countries/BW.yaml +29 -30
  188. data/lib/countries/data/countries/BY.yaml +30 -30
  189. data/lib/countries/data/countries/BZ.yaml +28 -29
  190. data/lib/countries/data/countries/CA.yaml +30 -30
  191. data/lib/countries/data/countries/CC.yaml +29 -29
  192. data/lib/countries/data/countries/CD.yaml +35 -36
  193. data/lib/countries/data/countries/CF.yaml +29 -30
  194. data/lib/countries/data/countries/CG.yaml +29 -30
  195. data/lib/countries/data/countries/CH.yaml +40 -40
  196. data/lib/countries/data/countries/CI.yaml +27 -28
  197. data/lib/countries/data/countries/CK.yaml +27 -28
  198. data/lib/countries/data/countries/CL.yaml +33 -28
  199. data/lib/countries/data/countries/CM.yaml +29 -30
  200. data/lib/countries/data/countries/CN.yaml +28 -28
  201. data/lib/countries/data/countries/CO.yaml +28 -28
  202. data/lib/countries/data/countries/CR.yaml +28 -28
  203. data/lib/countries/data/countries/CU.yaml +27 -27
  204. data/lib/countries/data/countries/CV.yaml +28 -28
  205. data/lib/countries/data/countries/CW.yaml +25 -26
  206. data/lib/countries/data/countries/CX.yaml +30 -30
  207. data/lib/countries/data/countries/CY.yaml +41 -41
  208. data/lib/countries/data/countries/CZ.yaml +38 -38
  209. data/lib/countries/data/countries/DE.yaml +36 -36
  210. data/lib/countries/data/countries/DJ.yaml +29 -30
  211. data/lib/countries/data/countries/DK.yaml +35 -35
  212. data/lib/countries/data/countries/DM.yaml +26 -27
  213. data/lib/countries/data/countries/DO.yaml +28 -28
  214. data/lib/countries/data/countries/DZ.yaml +28 -28
  215. data/lib/countries/data/countries/EC.yaml +28 -28
  216. data/lib/countries/data/countries/EE.yaml +36 -36
  217. data/lib/countries/data/countries/EG.yaml +28 -28
  218. data/lib/countries/data/countries/EH.yaml +30 -30
  219. data/lib/countries/data/countries/ER.yaml +31 -32
  220. data/lib/countries/data/countries/ES.yaml +36 -36
  221. data/lib/countries/data/countries/ET.yaml +28 -28
  222. data/lib/countries/data/countries/FI.yaml +39 -39
  223. data/lib/countries/data/countries/FJ.yaml +33 -34
  224. data/lib/countries/data/countries/FK.yaml +29 -29
  225. data/lib/countries/data/countries/FM.yaml +28 -28
  226. data/lib/countries/data/countries/FO.yaml +28 -28
  227. data/lib/countries/data/countries/FR.yaml +37 -37
  228. data/lib/countries/data/countries/GA.yaml +27 -28
  229. data/lib/countries/data/countries/GB.yaml +41 -36
  230. data/lib/countries/data/countries/GD.yaml +26 -27
  231. data/lib/countries/data/countries/GE.yaml +28 -28
  232. data/lib/countries/data/countries/GF.yaml +29 -29
  233. data/lib/countries/data/countries/GG.yaml +31 -31
  234. data/lib/countries/data/countries/GH.yaml +27 -28
  235. data/lib/countries/data/countries/GI.yaml +28 -28
  236. data/lib/countries/data/countries/GL.yaml +29 -29
  237. data/lib/countries/data/countries/GM.yaml +27 -28
  238. data/lib/countries/data/countries/GN.yaml +30 -30
  239. data/lib/countries/data/countries/GP.yaml +27 -27
  240. data/lib/countries/data/countries/GQ.yaml +29 -30
  241. data/lib/countries/data/countries/GR.yaml +37 -37
  242. data/lib/countries/data/countries/GS.yaml +29 -29
  243. data/lib/countries/data/countries/GT.yaml +28 -28
  244. data/lib/countries/data/countries/GU.yaml +31 -31
  245. data/lib/countries/data/countries/GW.yaml +28 -28
  246. data/lib/countries/data/countries/GY.yaml +26 -27
  247. data/lib/countries/data/countries/HK.yaml +29 -30
  248. data/lib/countries/data/countries/HM.yaml +28 -28
  249. data/lib/countries/data/countries/HN.yaml +28 -28
  250. data/lib/countries/data/countries/HR.yaml +37 -37
  251. data/lib/countries/data/countries/HT.yaml +29 -29
  252. data/lib/countries/data/countries/HU.yaml +37 -37
  253. data/lib/countries/data/countries/ID.yaml +28 -28
  254. data/lib/countries/data/countries/IE.yaml +39 -39
  255. data/lib/countries/data/countries/IL.yaml +35 -30
  256. data/lib/countries/data/countries/IM.yaml +31 -31
  257. data/lib/countries/data/countries/IN.yaml +30 -30
  258. data/lib/countries/data/countries/IO.yaml +28 -28
  259. data/lib/countries/data/countries/IQ.yaml +28 -28
  260. data/lib/countries/data/countries/IR.yaml +28 -28
  261. data/lib/countries/data/countries/IS.yaml +35 -35
  262. data/lib/countries/data/countries/IT.yaml +36 -36
  263. data/lib/countries/data/countries/JE.yaml +26 -26
  264. data/lib/countries/data/countries/JM.yaml +28 -29
  265. data/lib/countries/data/countries/JO.yaml +28 -28
  266. data/lib/countries/data/countries/JP.yaml +28 -28
  267. data/lib/countries/data/countries/KE.yaml +30 -30
  268. data/lib/countries/data/countries/KG.yaml +30 -30
  269. data/lib/countries/data/countries/KH.yaml +28 -28
  270. data/lib/countries/data/countries/KI.yaml +27 -28
  271. data/lib/countries/data/countries/KM.yaml +29 -30
  272. data/lib/countries/data/countries/KN.yaml +28 -29
  273. data/lib/countries/data/countries/KP.yaml +28 -28
  274. data/lib/countries/data/countries/KR.yaml +28 -28
  275. data/lib/countries/data/countries/KW.yaml +28 -28
  276. data/lib/countries/data/countries/KY.yaml +29 -29
  277. data/lib/countries/data/countries/KZ.yaml +30 -30
  278. data/lib/countries/data/countries/LA.yaml +28 -28
  279. data/lib/countries/data/countries/LB.yaml +30 -30
  280. data/lib/countries/data/countries/LC.yaml +28 -29
  281. data/lib/countries/data/countries/LI.yaml +27 -27
  282. data/lib/countries/data/countries/LK.yaml +28 -28
  283. data/lib/countries/data/countries/LR.yaml +28 -28
  284. data/lib/countries/data/countries/LS.yaml +28 -28
  285. data/lib/countries/data/countries/LT.yaml +37 -37
  286. data/lib/countries/data/countries/LU.yaml +39 -39
  287. data/lib/countries/data/countries/LV.yaml +42 -36
  288. data/lib/countries/data/countries/LY.yaml +27 -28
  289. data/lib/countries/data/countries/MA.yaml +28 -28
  290. data/lib/countries/data/countries/MC.yaml +28 -28
  291. data/lib/countries/data/countries/MD.yaml +28 -28
  292. data/lib/countries/data/countries/ME.yaml +34 -34
  293. data/lib/countries/data/countries/MF.yaml +29 -29
  294. data/lib/countries/data/countries/MG.yaml +30 -30
  295. data/lib/countries/data/countries/MH.yaml +30 -30
  296. data/lib/countries/data/countries/MK.yaml +28 -28
  297. data/lib/countries/data/countries/ML.yaml +27 -28
  298. data/lib/countries/data/countries/MM.yaml +27 -27
  299. data/lib/countries/data/countries/MN.yaml +28 -28
  300. data/lib/countries/data/countries/MO.yaml +28 -29
  301. data/lib/countries/data/countries/MP.yaml +31 -31
  302. data/lib/countries/data/countries/MQ.yaml +27 -27
  303. data/lib/countries/data/countries/MR.yaml +29 -30
  304. data/lib/countries/data/countries/MS.yaml +26 -27
  305. data/lib/countries/data/countries/MT.yaml +38 -38
  306. data/lib/countries/data/countries/MU.yaml +28 -28
  307. data/lib/countries/data/countries/MV.yaml +28 -28
  308. data/lib/countries/data/countries/MW.yaml +29 -30
  309. data/lib/countries/data/countries/MX.yaml +33 -33
  310. data/lib/countries/data/countries/MY.yaml +30 -30
  311. data/lib/countries/data/countries/MZ.yaml +28 -28
  312. data/lib/countries/data/countries/NA.yaml +30 -30
  313. data/lib/countries/data/countries/NC.yaml +29 -29
  314. data/lib/countries/data/countries/NE.yaml +28 -28
  315. data/lib/countries/data/countries/NF.yaml +29 -29
  316. data/lib/countries/data/countries/NG.yaml +34 -34
  317. data/lib/countries/data/countries/NI.yaml +28 -28
  318. data/lib/countries/data/countries/NL.yaml +36 -36
  319. data/lib/countries/data/countries/NO.yaml +36 -36
  320. data/lib/countries/data/countries/NP.yaml +32 -32
  321. data/lib/countries/data/countries/NR.yaml +27 -28
  322. data/lib/countries/data/countries/NU.yaml +25 -26
  323. data/lib/countries/data/countries/NZ.yaml +35 -35
  324. data/lib/countries/data/countries/OM.yaml +28 -28
  325. data/lib/countries/data/countries/PA.yaml +27 -28
  326. data/lib/countries/data/countries/PE.yaml +28 -28
  327. data/lib/countries/data/countries/PF.yaml +29 -29
  328. data/lib/countries/data/countries/PG.yaml +28 -28
  329. data/lib/countries/data/countries/PH.yaml +35 -35
  330. data/lib/countries/data/countries/PK.yaml +30 -30
  331. data/lib/countries/data/countries/PL.yaml +37 -37
  332. data/lib/countries/data/countries/PM.yaml +29 -29
  333. data/lib/countries/data/countries/PN.yaml +27 -27
  334. data/lib/countries/data/countries/PR.yaml +30 -30
  335. data/lib/countries/data/countries/PS.yaml +31 -32
  336. data/lib/countries/data/countries/PT.yaml +34 -34
  337. data/lib/countries/data/countries/PW.yaml +26 -26
  338. data/lib/countries/data/countries/PY.yaml +30 -30
  339. data/lib/countries/data/countries/QA.yaml +27 -28
  340. data/lib/countries/data/countries/RE.yaml +28 -28
  341. data/lib/countries/data/countries/RO.yaml +37 -37
  342. data/lib/countries/data/countries/RS.yaml +28 -28
  343. data/lib/countries/data/countries/RU.yaml +28 -28
  344. data/lib/countries/data/countries/RW.yaml +31 -32
  345. data/lib/countries/data/countries/SA.yaml +33 -28
  346. data/lib/countries/data/countries/SB.yaml +28 -29
  347. data/lib/countries/data/countries/SC.yaml +29 -30
  348. data/lib/countries/data/countries/SD.yaml +30 -30
  349. data/lib/countries/data/countries/SE.yaml +37 -37
  350. data/lib/countries/data/countries/SG.yaml +32 -32
  351. data/lib/countries/data/countries/SH.yaml +29 -29
  352. data/lib/countries/data/countries/SI.yaml +36 -36
  353. data/lib/countries/data/countries/SJ.yaml +29 -29
  354. data/lib/countries/data/countries/SK.yaml +36 -36
  355. data/lib/countries/data/countries/SL.yaml +27 -28
  356. data/lib/countries/data/countries/SM.yaml +28 -28
  357. data/lib/countries/data/countries/SN.yaml +28 -28
  358. data/lib/countries/data/countries/SO.yaml +30 -30
  359. data/lib/countries/data/countries/SR.yaml +26 -27
  360. data/lib/countries/data/countries/SS.yaml +29 -30
  361. data/lib/countries/data/countries/ST.yaml +27 -28
  362. data/lib/countries/data/countries/SV.yaml +27 -27
  363. data/lib/countries/data/countries/SX.yaml +28 -29
  364. data/lib/countries/data/countries/SY.yaml +27 -28
  365. data/lib/countries/data/countries/SZ.yaml +30 -30
  366. data/lib/countries/data/countries/TC.yaml +30 -30
  367. data/lib/countries/data/countries/TD.yaml +29 -30
  368. data/lib/countries/data/countries/TF.yaml +30 -31
  369. data/lib/countries/data/countries/TG.yaml +27 -28
  370. data/lib/countries/data/countries/TH.yaml +34 -33
  371. data/lib/countries/data/countries/TJ.yaml +30 -30
  372. data/lib/countries/data/countries/TK.yaml +27 -28
  373. data/lib/countries/data/countries/TL.yaml +27 -28
  374. data/lib/countries/data/countries/TM.yaml +30 -30
  375. data/lib/countries/data/countries/TN.yaml +30 -30
  376. data/lib/countries/data/countries/TO.yaml +29 -30
  377. data/lib/countries/data/countries/TR.yaml +28 -28
  378. data/lib/countries/data/countries/TT.yaml +28 -29
  379. data/lib/countries/data/countries/TV.yaml +27 -28
  380. data/lib/countries/data/countries/TW.yaml +28 -28
  381. data/lib/countries/data/countries/TZ.yaml +30 -30
  382. data/lib/countries/data/countries/UA.yaml +34 -34
  383. data/lib/countries/data/countries/UG.yaml +29 -30
  384. data/lib/countries/data/countries/UM.yaml +29 -29
  385. data/lib/countries/data/countries/US.yaml +29 -28
  386. data/lib/countries/data/countries/UY.yaml +28 -28
  387. data/lib/countries/data/countries/UZ.yaml +30 -30
  388. data/lib/countries/data/countries/VA.yaml +31 -31
  389. data/lib/countries/data/countries/VC.yaml +29 -29
  390. data/lib/countries/data/countries/VE.yaml +28 -28
  391. data/lib/countries/data/countries/VG.yaml +30 -30
  392. data/lib/countries/data/countries/VI.yaml +28 -28
  393. data/lib/countries/data/countries/VN.yaml +34 -28
  394. data/lib/countries/data/countries/VU.yaml +31 -32
  395. data/lib/countries/data/countries/WF.yaml +29 -29
  396. data/lib/countries/data/countries/WS.yaml +29 -30
  397. data/lib/countries/data/countries/YE.yaml +27 -28
  398. data/lib/countries/data/countries/YT.yaml +26 -26
  399. data/lib/countries/data/countries/ZA.yaml +40 -40
  400. data/lib/countries/data/countries/ZM.yaml +28 -28
  401. data/lib/countries/data/countries/ZW.yaml +31 -32
  402. data/lib/countries/data/subdivisions/AD.yaml +35 -28
  403. data/lib/countries/data/subdivisions/AE.yaml +154 -63
  404. data/lib/countries/data/subdivisions/AF.yaml +605 -300
  405. data/lib/countries/data/subdivisions/AG.yaml +149 -67
  406. data/lib/countries/data/subdivisions/AI.yaml +57 -43
  407. data/lib/countries/data/subdivisions/AL.yaml +252 -468
  408. data/lib/countries/data/subdivisions/AM.yaml +236 -88
  409. data/lib/countries/data/subdivisions/AO.yaml +344 -144
  410. data/lib/countries/data/subdivisions/AR.yaml +450 -187
  411. data/lib/countries/data/subdivisions/AT.yaml +202 -72
  412. data/lib/countries/data/subdivisions/AU.yaml +212 -64
  413. data/lib/countries/data/subdivisions/AZ.yaml +1550 -592
  414. data/lib/countries/data/subdivisions/BA.yaml +189 -16
  415. data/lib/countries/data/subdivisions/BB.yaml +190 -88
  416. data/lib/countries/data/subdivisions/BD.yaml +1192 -519
  417. data/lib/countries/data/subdivisions/BE.yaml +278 -88
  418. data/lib/countries/data/subdivisions/BF.yaml +993 -366
  419. data/lib/countries/data/subdivisions/BG.yaml +600 -219
  420. data/lib/countries/data/subdivisions/BH.yaml +72 -35
  421. data/lib/countries/data/subdivisions/BI.yaml +298 -123
  422. data/lib/countries/data/subdivisions/BJ.yaml +226 -96
  423. data/lib/countries/data/subdivisions/BM.yaml +44 -33
  424. data/lib/countries/data/subdivisions/BN.yaml +63 -32
  425. data/lib/countries/data/subdivisions/BO.yaml +157 -72
  426. data/lib/countries/data/subdivisions/BQ.yaml +63 -24
  427. data/lib/countries/data/subdivisions/BR.yaml +689 -216
  428. data/lib/countries/data/subdivisions/BS.yaml +625 -108
  429. data/lib/countries/data/subdivisions/BT.yaml +346 -160
  430. data/lib/countries/data/subdivisions/BW.yaml +294 -72
  431. data/lib/countries/data/subdivisions/BY.yaml +140 -51
  432. data/lib/countries/data/subdivisions/BZ.yaml +97 -48
  433. data/lib/countries/data/subdivisions/CA.yaml +358 -105
  434. data/lib/countries/data/subdivisions/CD.yaml +451 -68
  435. data/lib/countries/data/subdivisions/CF.yaml +291 -136
  436. data/lib/countries/data/subdivisions/CG.yaml +217 -88
  437. data/lib/countries/data/subdivisions/CH.yaml +593 -208
  438. data/lib/countries/data/subdivisions/CI.yaml +431 -66
  439. data/lib/countries/data/subdivisions/CK.yaml +44 -33
  440. data/lib/countries/data/subdivisions/CL.yaml +262 -132
  441. data/lib/countries/data/subdivisions/CM.yaml +190 -80
  442. data/lib/countries/data/subdivisions/CN.yaml +618 -46
  443. data/lib/countries/data/subdivisions/CO.yaml +643 -264
  444. data/lib/countries/data/subdivisions/CR.yaml +119 -56
  445. data/lib/countries/data/subdivisions/CU.yaml +268 -128
  446. data/lib/countries/data/subdivisions/CV.yaml +414 -126
  447. data/lib/countries/data/subdivisions/CY.yaml +102 -48
  448. data/lib/countries/data/subdivisions/CZ.yaml +1035 -1349
  449. data/lib/countries/data/subdivisions/DE.yaml +484 -144
  450. data/lib/countries/data/subdivisions/DJ.yaml +110 -48
  451. data/lib/countries/data/subdivisions/DK.yaml +110 -241
  452. data/lib/countries/data/subdivisions/DM.yaml +159 -80
  453. data/lib/countries/data/subdivisions/DO.yaml +660 -248
  454. data/lib/countries/data/subdivisions/DZ.yaml +809 -384
  455. data/lib/countries/data/subdivisions/EC.yaml +391 -192
  456. data/lib/countries/data/subdivisions/EE.yaml +653 -146
  457. data/lib/countries/data/subdivisions/EG.yaml +472 -216
  458. data/lib/countries/data/subdivisions/EH.yaml +20 -12
  459. data/lib/countries/data/subdivisions/ER.yaml +109 -48
  460. data/lib/countries/data/subdivisions/ES.yaml +1738 -435
  461. data/lib/countries/data/subdivisions/ET.yaml +207 -88
  462. data/lib/countries/data/subdivisions/FI.yaml +111 -124
  463. data/lib/countries/data/subdivisions/FJ.yaml +314 -40
  464. data/lib/countries/data/subdivisions/FM.yaml +63 -32
  465. data/lib/countries/data/subdivisions/FR.yaml +2826 -1280
  466. data/lib/countries/data/subdivisions/GA.yaml +159 -72
  467. data/lib/countries/data/subdivisions/GB.yaml +4980 -1771
  468. data/lib/countries/data/subdivisions/GD.yaml +114 -56
  469. data/lib/countries/data/subdivisions/GE.yaml +238 -96
  470. data/lib/countries/data/subdivisions/GH.yaml +266 -79
  471. data/lib/countries/data/subdivisions/GL.yaml +89 -0
  472. data/lib/countries/data/subdivisions/GM.yaml +124 -48
  473. data/lib/countries/data/subdivisions/GN.yaml +711 -274
  474. data/lib/countries/data/subdivisions/GQ.yaml +144 -72
  475. data/lib/countries/data/subdivisions/GR.yaml +297 -739
  476. data/lib/countries/data/subdivisions/GT.yaml +351 -176
  477. data/lib/countries/data/subdivisions/GW.yaml +192 -72
  478. data/lib/countries/data/subdivisions/GY.yaml +163 -80
  479. data/lib/countries/data/subdivisions/HN.yaml +274 -144
  480. data/lib/countries/data/subdivisions/HR.yaml +429 -168
  481. data/lib/countries/data/subdivisions/HT.yaml +179 -72
  482. data/lib/countries/data/subdivisions/HU.yaml +855 -403
  483. data/lib/countries/data/subdivisions/ID.yaml +2377 -1859
  484. data/lib/countries/data/subdivisions/IE.yaml +831 -440
  485. data/lib/countries/data/subdivisions/IL.yaml +114 -48
  486. data/lib/countries/data/subdivisions/IN.yaml +1006 -298
  487. data/lib/countries/data/subdivisions/IQ.yaml +316 -139
  488. data/lib/countries/data/subdivisions/IR.yaml +597 -239
  489. data/lib/countries/data/subdivisions/IS.yaml +445 -67
  490. data/lib/countries/data/subdivisions/IT.yaml +3435 -2211
  491. data/lib/countries/data/subdivisions/JM.yaml +243 -112
  492. data/lib/countries/data/subdivisions/JO.yaml +193 -96
  493. data/lib/countries/data/subdivisions/JP.yaml +950 -376
  494. data/lib/countries/data/subdivisions/KE.yaml +928 -273
  495. data/lib/countries/data/subdivisions/KG.yaml +188 -64
  496. data/lib/countries/data/subdivisions/KH.yaml +437 -192
  497. data/lib/countries/data/subdivisions/KI.yaml +57 -24
  498. data/lib/countries/data/subdivisions/KM.yaml +49 -24
  499. data/lib/countries/data/subdivisions/KN.yaml +308 -112
  500. data/lib/countries/data/subdivisions/KP.yaml +365 -57
  501. data/lib/countries/data/subdivisions/KR.yaml +393 -128
  502. data/lib/countries/data/subdivisions/KW.yaml +87 -48
  503. data/lib/countries/data/subdivisions/KZ.yaml +362 -135
  504. data/lib/countries/data/subdivisions/LA.yaml +300 -145
  505. data/lib/countries/data/subdivisions/LB.yaml +134 -48
  506. data/lib/countries/data/subdivisions/LC.yaml +166 -0
  507. data/lib/countries/data/subdivisions/LI.yaml +186 -88
  508. data/lib/countries/data/subdivisions/LK.yaml +544 -200
  509. data/lib/countries/data/subdivisions/LR.yaml +252 -110
  510. data/lib/countries/data/subdivisions/LS.yaml +149 -80
  511. data/lib/countries/data/subdivisions/LT.yaml +1042 -80
  512. data/lib/countries/data/subdivisions/LU.yaml +280 -146
  513. data/lib/countries/data/subdivisions/LV.yaml +766 -3582
  514. data/lib/countries/data/subdivisions/LY.yaml +339 -162
  515. data/lib/countries/data/subdivisions/MA.yaml +1443 -484
  516. data/lib/countries/data/subdivisions/MC.yaml +250 -0
  517. data/lib/countries/data/subdivisions/MD.yaml +1103 -558
  518. data/lib/countries/data/subdivisions/ME.yaml +425 -168
  519. data/lib/countries/data/subdivisions/MG.yaml +93 -48
  520. data/lib/countries/data/subdivisions/MH.yaml +422 -199
  521. data/lib/countries/data/subdivisions/MK.yaml +3556 -3147
  522. data/lib/countries/data/subdivisions/ML.yaml +187 -71
  523. data/lib/countries/data/subdivisions/MM.yaml +287 -112
  524. data/lib/countries/data/subdivisions/MN.yaml +421 -176
  525. data/lib/countries/data/subdivisions/MR.yaml +245 -99
  526. data/lib/countries/data/subdivisions/MT.yaml +1059 -544
  527. data/lib/countries/data/subdivisions/MU.yaml +317 -131
  528. data/lib/countries/data/subdivisions/MV.yaml +457 -163
  529. data/lib/countries/data/subdivisions/MW.yaml +537 -216
  530. data/lib/countries/data/subdivisions/MX.yaml +709 -256
  531. data/lib/countries/data/subdivisions/MY.yaml +336 -128
  532. data/lib/countries/data/subdivisions/MZ.yaml +191 -83
  533. data/lib/countries/data/subdivisions/NA.yaml +220 -107
  534. data/lib/countries/data/subdivisions/NE.yaml +170 -64
  535. data/lib/countries/data/subdivisions/NG.yaml +870 -296
  536. data/lib/countries/data/subdivisions/NI.yaml +260 -136
  537. data/lib/countries/data/subdivisions/NL.yaml +381 -96
  538. data/lib/countries/data/subdivisions/NO.yaml +633 -1095
  539. data/lib/countries/data/subdivisions/NP.yaml +383 -112
  540. data/lib/countries/data/subdivisions/NR.yaml +260 -112
  541. data/lib/countries/data/subdivisions/NZ.yaml +340 -197
  542. data/lib/countries/data/subdivisions/OM.yaml +202 -52
  543. data/lib/countries/data/subdivisions/PA.yaml +203 -99
  544. data/lib/countries/data/subdivisions/PE.yaml +418 -208
  545. data/lib/countries/data/subdivisions/PG.yaml +381 -155
  546. data/lib/countries/data/subdivisions/PH.yaml +1855 -662
  547. data/lib/countries/data/subdivisions/PK.yaml +185 -54
  548. data/lib/countries/data/subdivisions/PL.yaml +83 -32
  549. data/lib/countries/data/subdivisions/PS.yaml +257 -0
  550. data/lib/countries/data/subdivisions/PT.yaml +355 -173
  551. data/lib/countries/data/subdivisions/PW.yaml +269 -128
  552. data/lib/countries/data/subdivisions/PY.yaml +321 -144
  553. data/lib/countries/data/subdivisions/QA.yaml +168 -65
  554. data/lib/countries/data/subdivisions/RO.yaml +729 -336
  555. data/lib/countries/data/subdivisions/RS.yaml +589 -240
  556. data/lib/countries/data/subdivisions/RU.yaml +1875 -665
  557. data/lib/countries/data/subdivisions/RW.yaml +102 -40
  558. data/lib/countries/data/subdivisions/SA.yaml +234 -104
  559. data/lib/countries/data/subdivisions/SB.yaml +169 -80
  560. data/lib/countries/data/subdivisions/SC.yaml +464 -184
  561. data/lib/countries/data/subdivisions/SD.yaml +163 -22
  562. data/lib/countries/data/subdivisions/SE.yaml +435 -237
  563. data/lib/countries/data/subdivisions/SG.yaml +71 -49
  564. data/lib/countries/data/subdivisions/SH.yaml +67 -14
  565. data/lib/countries/data/subdivisions/SI.yaml +3570 -1549
  566. data/lib/countries/data/subdivisions/SJ.yaml +8 -6
  567. data/lib/countries/data/subdivisions/SK.yaml +129 -64
  568. data/lib/countries/data/subdivisions/SL.yaml +80 -31
  569. data/lib/countries/data/subdivisions/SM.yaml +159 -72
  570. data/lib/countries/data/subdivisions/SN.yaml +233 -88
  571. data/lib/countries/data/subdivisions/SO.yaml +311 -144
  572. data/lib/countries/data/subdivisions/SR.yaml +158 -80
  573. data/lib/countries/data/subdivisions/SS.yaml +196 -0
  574. data/lib/countries/data/subdivisions/ST.yaml +55 -16
  575. data/lib/countries/data/subdivisions/SV.yaml +231 -112
  576. data/lib/countries/data/subdivisions/SY.yaml +220 -112
  577. data/lib/countries/data/subdivisions/SZ.yaml +65 -32
  578. data/lib/countries/data/subdivisions/TD.yaml +409 -139
  579. data/lib/countries/data/subdivisions/TG.yaml +75 -40
  580. data/lib/countries/data/subdivisions/TH.yaml +1451 -616
  581. data/lib/countries/data/subdivisions/TJ.yaml +100 -24
  582. data/lib/countries/data/subdivisions/TK.yaml +12 -9
  583. data/lib/countries/data/subdivisions/TL.yaml +209 -104
  584. data/lib/countries/data/subdivisions/TM.yaml +116 -40
  585. data/lib/countries/data/subdivisions/TN.yaml +412 -192
  586. data/lib/countries/data/subdivisions/TO.yaml +75 -40
  587. data/lib/countries/data/subdivisions/TR.yaml +1817 -648
  588. data/lib/countries/data/subdivisions/TT.yaml +296 -113
  589. data/lib/countries/data/subdivisions/TV.yaml +133 -59
  590. data/lib/countries/data/subdivisions/TW.yaml +467 -164
  591. data/lib/countries/data/subdivisions/TZ.yaml +661 -208
  592. data/lib/countries/data/subdivisions/UA.yaml +505 -216
  593. data/lib/countries/data/subdivisions/UG.yaml +2269 -640
  594. data/lib/countries/data/subdivisions/UM.yaml +207 -72
  595. data/lib/countries/data/subdivisions/US.yaml +1635 -483
  596. data/lib/countries/data/subdivisions/UY.yaml +367 -152
  597. data/lib/countries/data/subdivisions/UZ.yaml +289 -113
  598. data/lib/countries/data/subdivisions/VC.yaml +101 -48
  599. data/lib/countries/data/subdivisions/VE.yaml +456 -200
  600. data/lib/countries/data/subdivisions/VN.yaml +3664 -2996
  601. data/lib/countries/data/subdivisions/VU.yaml +98 -48
  602. data/lib/countries/data/subdivisions/WF.yaml +63 -0
  603. data/lib/countries/data/subdivisions/WS.yaml +200 -88
  604. data/lib/countries/data/subdivisions/YE.yaml +375 -152
  605. data/lib/countries/data/subdivisions/ZA.yaml +238 -72
  606. data/lib/countries/data/subdivisions/ZM.yaml +157 -72
  607. data/lib/countries/data/subdivisions/ZW.yaml +152 -73
  608. data/lib/countries/data/translation_corrections.yaml +24 -7
  609. data/lib/countries/data.rb +71 -41
  610. data/lib/countries/global.rb +15 -3
  611. data/lib/countries/iso3166.rb +3 -0
  612. data/lib/countries/kwarg_struct.rb +2 -0
  613. data/lib/countries/mongoid.rb +5 -0
  614. data/lib/countries/sources/cldr/downloader.rb +16 -14
  615. data/lib/countries/sources/cldr/subdivision.rb +4 -0
  616. data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
  617. data/lib/countries/sources/local/cached_loader.rb +5 -0
  618. data/lib/countries/sources/local/subdivision.rb +6 -2
  619. data/lib/countries/sources.rb +2 -0
  620. data/lib/countries/structure.rb +4 -6
  621. data/lib/countries/subdivision.rb +2 -0
  622. data/lib/countries/tasks/geocoding.rake +21 -19
  623. data/lib/countries/tasks/postal_codes.rake +50 -0
  624. data/lib/countries/timezones.rb +9 -4
  625. data/lib/countries/translations.rb +5 -4
  626. data/lib/countries/version.rb +3 -1
  627. data/lib/countries.rb +2 -1
  628. data/spec/00_global_spec.rb +2 -0
  629. data/spec/configuration_spec.rb +11 -5
  630. data/spec/country_spec.rb +232 -69
  631. data/spec/data_spec.rb +35 -29
  632. data/spec/mongoid_spec.rb +2 -2
  633. data/spec/perf_spec.rb +16 -16
  634. data/spec/spec_helper.rb +2 -0
  635. data/spec/subdivision_spec.rb +6 -4
  636. data/spec/thread_safety_spec.rb +47 -0
  637. data/spec/timezone_spec.rb +2 -0
  638. metadata +31 -52
  639. data/.travis.yml +0 -15
  640. data/lib/countries/data/subdivisions/AS.yaml +0 -66
  641. data/lib/countries/data/subdivisions/AX.yaml +0 -40
  642. data/lib/countries/data/subdivisions/FO.yaml +0 -79
  643. data/lib/countries/data/subdivisions/GG.yaml +0 -144
  644. data/lib/countries/data/subdivisions/GU.yaml +0 -248
  645. data/lib/countries/data/subdivisions/HK.yaml +0 -235
  646. data/lib/countries/data/subdivisions/IM.yaml +0 -313
  647. data/lib/countries/data/subdivisions/JE.yaml +0 -157
  648. data/lib/countries/data/subdivisions/KY.yaml +0 -73
  649. data/lib/countries/data/subdivisions/MP.yaml +0 -53
  650. data/lib/countries/data/subdivisions/MS.yaml +0 -40
  651. data/lib/countries/data/subdivisions/NC.yaml +0 -40
  652. data/lib/countries/data/subdivisions/PF.yaml +0 -66
  653. data/lib/countries/data/subdivisions/PM.yaml +0 -27
  654. data/lib/countries/data/subdivisions/PR.yaml +0 -1015
  655. data/lib/countries/data/subdivisions/TF.yaml +0 -49
  656. data/lib/countries/data/subdivisions/VI.yaml +0 -40
  657. data/lib/countries/data/subdivisions/YT.yaml +0 -222
  658. data/lib/countries/setup.rb +0 -18
data/spec/country_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
4
  NUM_OF_COUNTRIES = 249
@@ -43,12 +43,14 @@ describe ISO3166::Country do
43
43
  expect(country.alpha3).to eq('USA')
44
44
  end
45
45
 
46
- it 'should return 3166 name' do
47
- expect(country.name).to eq('United States of America')
46
+ it 'should return 3166 iso_short_name' do
47
+ expect(country.iso_short_name).to eq('United States of America')
48
48
  end
49
49
 
50
50
  it 'should return alternate names' do
51
- expect(country.names).to eq(['United States', 'Murica', 'Vereinigte Staaten von Amerika', 'États-Unis', 'Estados Unidos', 'アメリカ合衆国', 'Verenigde Staten'])
51
+ expect(country.unofficial_names).to eq(['United States', 'USA', 'Murica',
52
+ 'Vereinigte Staaten von Amerika', 'États-Unis',
53
+ 'Estados Unidos', 'アメリカ合衆国', 'Verenigde Staten'])
52
54
  end
53
55
 
54
56
  it 'should return translations' do
@@ -65,15 +67,7 @@ describe ISO3166::Country do
65
67
  end
66
68
 
67
69
  it 'should return bounds' do
68
- expect(country.bounds['northeast']['lat']).to eq(71.5388001)
69
- end
70
-
71
- it 'should return the decimal Latitude' do
72
- expect(country.latitude_dec).to eq('39.44325637817383')
73
- end
74
-
75
- it 'should return the decimal Longitude' do
76
- expect(country.longitude_dec).to eq('-98.95733642578125')
70
+ expect(country.bounds['northeast']['lat']).to eq(71.3577635769)
77
71
  end
78
72
 
79
73
  it 'should return continent' do
@@ -85,8 +79,18 @@ describe ISO3166::Country do
85
79
  end
86
80
 
87
81
  it 'knows when a country does not require postal codes' do
88
- ireland = ISO3166::Country.search('IE')
89
- expect(ireland.postal_code).to eq(false)
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
90
94
  end
91
95
 
92
96
  it 'should return region' do
@@ -121,7 +125,7 @@ describe ISO3166::Country do
121
125
  let(:country) { ISO3166::Country.search('BE') }
122
126
 
123
127
  it 'should return its local names based on its languages' do
124
- expect(country.local_names).to match_array(%w(België Belgique Belgien))
128
+ expect(country.local_names).to match_array(%w[België Belgique Belgien])
125
129
  end
126
130
 
127
131
  it 'should return its first local name' do
@@ -134,7 +138,7 @@ describe ISO3166::Country do
134
138
  before do
135
139
  ISO3166::Data.register(
136
140
  alpha2: 'BR2',
137
- name: 'Brazil',
141
+ iso_short_name: 'Brazil',
138
142
  languages_official: %w(pt-BR),
139
143
  translations: {
140
144
  'pt-BR' => 'Translation for pt-BR',
@@ -158,7 +162,7 @@ describe ISO3166::Country do
158
162
  before do
159
163
  ISO3166::Data.register(
160
164
  alpha2: 'BR2',
161
- name: 'Brazil',
165
+ iso_short_name: 'Brazil',
162
166
  languages_official: %w(pt-BR),
163
167
  translations: {
164
168
  'pt' => 'Translation for pt'
@@ -223,11 +227,11 @@ describe ISO3166::Country do
223
227
  end
224
228
 
225
229
  it 'should return a hash with all sub divisions' do
226
- expect(country.subdivisions.size).to eq(60)
230
+ expect(country.subdivisions.size).to eq(57)
227
231
  end
228
232
 
229
233
  it 'should be available through states' do
230
- expect(country.states.size).to eq(60)
234
+ expect(country.states.size).to eq(57)
231
235
  end
232
236
 
233
237
  it 'should be a subdivision object' do
@@ -238,6 +242,10 @@ describe ISO3166::Country do
238
242
  expect(virginia.name).to eq('Virginia')
239
243
  end
240
244
 
245
+ it 'should have a code' do
246
+ expect(virginia.code).to eq('VA')
247
+ end
248
+
241
249
  it 'should behave like a hash' do
242
250
  expect(virginia['name']).to eq('Virginia')
243
251
  end
@@ -253,7 +261,7 @@ describe ISO3166::Country do
253
261
  end
254
262
 
255
263
  it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
256
- ISO3166.configuration.locales = [:es, :de, :en]
264
+ ISO3166.configuration.locales = %i[es de en]
257
265
 
258
266
  subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes(:es)
259
267
  expect(subdivisions).to be_an(Array)
@@ -309,7 +317,7 @@ describe ISO3166::Country do
309
317
  end
310
318
 
311
319
  it 'should allow to customize each country representation passing a block to the method' do
312
- countries = ISO3166::Country.all { |country, data| [data['name'], country, data['country_code']] }
320
+ countries = ISO3166::Country.all { |country, data| [data['iso_short_name'], country, data['country_code']] }
313
321
  expect(countries).to be_an(Array)
314
322
  expect(countries.first).to be_an(Array)
315
323
  expect(countries.first.size).to eq(3)
@@ -335,6 +343,26 @@ describe ISO3166::Country do
335
343
  expect(countries.first).to eq('Aruba')
336
344
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
337
345
  end
346
+
347
+ context 'with custom countries' do
348
+ before do
349
+ ISO3166::Data.register(
350
+ alpha2: 'XX',
351
+ iso_short_name: 'Custom Country',
352
+ translations: { 'en' => 'Custom Country' }
353
+ )
354
+ end
355
+
356
+ it 'should include custom registered countries' do
357
+ custom_country = ISO3166::Country.find_by_alpha2('XX')[1]
358
+ countries = ISO3166::Country.all_translated
359
+ expect(countries).to include(custom_country['iso_short_name'])
360
+ end
361
+
362
+ after do
363
+ ISO3166::Data.unregister('XX')
364
+ end
365
+ end
338
366
  end
339
367
 
340
368
  describe 'all_names_with_codes' do
@@ -345,11 +373,11 @@ describe ISO3166::Country do
345
373
  expect(countries.first[0]).to be_a(String)
346
374
  expect(countries.first[0]).to eq('Afghanistan')
347
375
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
348
- expect(countries.any?{|pair| !pair[0].html_safe?}).to eq(false)
376
+ expect(countries.any? { |pair| !pair[0].html_safe? }).to eq(false)
349
377
  end
350
378
 
351
379
  it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
352
- ISO3166.configuration.locales = [:es, :de, :en]
380
+ ISO3166.configuration.locales = %i[es de en]
353
381
 
354
382
  countries = ISO3166::Country.all_names_with_codes(:es)
355
383
  expect(countries).to be_an(Array)
@@ -369,7 +397,7 @@ describe ISO3166::Country do
369
397
  end
370
398
 
371
399
  it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
372
- ISO3166.configuration.locales = [:es, :de, :en]
400
+ ISO3166.configuration.locales = %i[es de en]
373
401
 
374
402
  countries = ISO3166::Country.all_names_with_codes(:es)
375
403
  expect(countries).to be_an(Array)
@@ -381,7 +409,7 @@ describe ISO3166::Country do
381
409
 
382
410
  describe 'translation' do
383
411
  it 'should return the localized name for a country to the selected locale' do
384
- ISO3166.configuration.locales = [:es, :de, :en]
412
+ ISO3166.configuration.locales = %i[es de en]
385
413
  countries = ISO3166::Country.new(:de).translation('de')
386
414
  expect(countries).to be_an(String)
387
415
  expect(countries).to eq('Deutschland')
@@ -400,7 +428,7 @@ describe ISO3166::Country do
400
428
 
401
429
  context 'should return variant locales' do
402
430
  it 'should return different value for Chinese variants' do
403
- ISO3166.configuration.locales = [:'zh-cn', :'zh-hk', :'zh-tw']
431
+ ISO3166.configuration.locales = %i[zh-cn zh-hk zh-tw]
404
432
  name_cn = ISO3166::Country['TW'].translation('zh-cn')
405
433
  name_hk = ISO3166::Country['TW'].translation('zh-hk')
406
434
  name_tw = ISO3166::Country['TW'].translation('zh-tw')
@@ -408,7 +436,7 @@ describe ISO3166::Country do
408
436
  end
409
437
 
410
438
  it 'should return different value for Portuguese variants' do
411
- ISO3166.configuration.locales = [:pt, :'pt-br']
439
+ ISO3166.configuration.locales = %i[pt pt-br]
412
440
  name_pt = ISO3166::Country['SG'].translation('pt')
413
441
  name_br = ISO3166::Country['SG'].translation('pt-br')
414
442
  expect([name_pt, name_br].uniq.size).to eql 2
@@ -421,7 +449,7 @@ describe ISO3166::Country do
421
449
  countries = ISO3166::Country.translations('fr')
422
450
  expect(countries).to be_an(Hash)
423
451
  expect(countries.first[0]).to eq('AW')
424
- expect(countries.first).to eq(%w(AW Aruba))
452
+ expect(countries.first).to eq(%w[AW Aruba])
425
453
  # countries missing the desired locale will not be added to the list
426
454
  # so all 250 countries may not be returned, 'fr' returns 249, for example
427
455
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
@@ -431,7 +459,7 @@ describe ISO3166::Country do
431
459
  countries = ISO3166::Country.translations
432
460
  expect(countries).to be_an(Hash)
433
461
  expect(countries.first[0]).to eq('AW')
434
- expect(countries.first).to eq(%w(AW Aruba))
462
+ expect(countries.first).to eq(%w[AW Aruba])
435
463
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
436
464
  end
437
465
  end
@@ -515,7 +543,7 @@ describe ISO3166::Country do
515
543
  end
516
544
 
517
545
  it 'also performs searches with regexps and forces it to ignore case' do
518
- spain_data = ISO3166::Country.find_all_by(:names, /Españ/)
546
+ spain_data = ISO3166::Country.find_all_by(:unofficial_names, /Españ/)
519
547
  expect(spain_data).to be_a Hash
520
548
  expect(spain_data.keys).to eq(['ES'])
521
549
  end
@@ -527,7 +555,7 @@ describe ISO3166::Country do
527
555
  case lookup.length
528
556
  when 2 then ISO3166::Country.find_all_by(:alpha2, lookup)
529
557
  when 3 then ISO3166::Country.find_all_by(:alpha3, lookup)
530
- else ISO3166::Country.find_all_by(:name, lookup)
558
+ else ISO3166::Country.find_all_by(:iso_short_name, lookup)
531
559
  end
532
560
  end
533
561
  expect(Time.now - start).to be < 1
@@ -535,22 +563,22 @@ describe ISO3166::Country do
535
563
  end
536
564
 
537
565
  describe 'hash finder methods' do
538
- context "when search name in 'name'" do
539
- subject { ISO3166::Country.find_by_name('Poland') }
566
+ context "when search name in 'iso_short_name'" do
567
+ subject { ISO3166::Country.find_by_iso_short_name('Poland') }
540
568
  it 'should return' do
541
569
  expect(subject.first).to eq('PL')
542
570
  end
543
571
  end
544
572
 
545
- context "when search lowercase name in 'name'" do
546
- subject { ISO3166::Country.find_by_name('poland') }
573
+ context "when search lowercase name in 'iso_short_name'" do
574
+ subject { ISO3166::Country.find_by_iso_short_name('poland') }
547
575
  it 'should return' do
548
576
  expect(subject.first).to eq('PL')
549
577
  end
550
578
  end
551
579
 
552
- context "when search name with comma in 'name'" do
553
- subject { ISO3166::Country.find_by_name(country_name) }
580
+ context "when search name with comma in 'iso_short_name'" do
581
+ subject { ISO3166::Country.find_by_iso_short_name(country_name) }
554
582
 
555
583
  context 'with Republic of Korea' do
556
584
  let(:country_name) { 'Korea, Republic of' }
@@ -575,7 +603,7 @@ describe ISO3166::Country do
575
603
  end
576
604
 
577
605
  context 'when search lowercase multibyte name found' do
578
- subject { ISO3166::Country.find_country_by_name('россия') }
606
+ subject { ISO3166::Country.find_country_by_unofficial_names('россия') }
579
607
 
580
608
  it 'should be a country instance' do
581
609
  expect(subject).to be_a(ISO3166::Country)
@@ -584,7 +612,7 @@ describe ISO3166::Country do
584
612
  end
585
613
 
586
614
  context 'when search lowercase multibyte name found' do
587
- subject { ISO3166::Country.find_country_by_name(/россия/) }
615
+ subject { ISO3166::Country.find_country_by_unofficial_names(/россия/) }
588
616
 
589
617
  it 'should be a country instance' do
590
618
  expect(subject).to be_a(ISO3166::Country)
@@ -593,7 +621,7 @@ describe ISO3166::Country do
593
621
  end
594
622
 
595
623
  context 'when accents are not used' do
596
- subject { ISO3166::Country.find_country_by_name('emirats Arabes Unis') }
624
+ subject { ISO3166::Country.find_country_by_unofficial_names('emirats Arabes Unis') }
597
625
 
598
626
  it 'should be a country instance' do
599
627
  expect(subject).to be_a(ISO3166::Country)
@@ -601,8 +629,20 @@ describe ISO3166::Country do
601
629
  end
602
630
  end
603
631
 
604
- context "when search name in 'names'" do
605
- subject { ISO3166::Country.find_by_name('Polonia') }
632
+ context "when search name in 'unofficial_names'" do
633
+ subject { ISO3166::Country.find_by_unofficial_names('Polonia') }
634
+ it 'should return' do
635
+ expect(subject.first).to eq('PL')
636
+ end
637
+ end
638
+
639
+ context "when search name in 'translated_names'" do
640
+ before do
641
+ ISO3166.configure do |config|
642
+ config.locales = [:bs]
643
+ end
644
+ end
645
+ subject { ISO3166::Country.find_by_translated_names('Poljska') }
606
646
  it 'should return' do
607
647
  expect(subject.first).to eq('PL')
608
648
  end
@@ -610,7 +650,9 @@ describe ISO3166::Country do
610
650
 
611
651
  context 'when finding by invalid attribute' do
612
652
  it 'should raise an error' do
613
- expect { ISO3166::Country.find_by_invalid('invalid') }.to raise_error(RuntimeError, "Invalid attribute name 'invalid'")
653
+ expect { ISO3166::Country.find_by_invalid('invalid') }.to(
654
+ raise_error(RuntimeError, "Invalid attribute name 'invalid'")
655
+ )
614
656
  end
615
657
  end
616
658
 
@@ -635,7 +677,7 @@ describe ISO3166::Country do
635
677
 
636
678
  describe 'country finder methods' do
637
679
  context 'when search name found' do
638
- let(:uk) { ISO3166::Country.find_country_by_name('United Kingdom') }
680
+ let(:uk) { ISO3166::Country.find_country_by_unofficial_names('United Kingdom') }
639
681
 
640
682
  it 'should be a country instance' do
641
683
  expect(uk).to be_a(ISO3166::Country)
@@ -644,7 +686,7 @@ describe ISO3166::Country do
644
686
  end
645
687
 
646
688
  context 'when search lowercase name found' do
647
- let(:uk) { ISO3166::Country.find_country_by_name('united kingdom') }
689
+ let(:uk) { ISO3166::Country.find_country_by_unofficial_names('united kingdom') }
648
690
 
649
691
  it 'should be a country instance' do
650
692
  expect(uk).to be_a(ISO3166::Country)
@@ -653,7 +695,7 @@ describe ISO3166::Country do
653
695
  end
654
696
 
655
697
  context 'when the search term contains comma' do
656
- let(:korea) { ISO3166::Country.find_country_by_name('Korea, Republic of') }
698
+ let(:korea) { ISO3166::Country.find_country_by_unofficial_names('Korea, Republic of') }
657
699
 
658
700
  it 'should be a country instance' do
659
701
  expect(korea).to be_a(ISO3166::Country)
@@ -675,6 +717,49 @@ describe ISO3166::Country do
675
717
  end
676
718
  end
677
719
 
720
+ describe '#find_country_by_any_name' do
721
+ context 'when search name found' do
722
+ let(:uk) { ISO3166::Country.find_country_by_any_name('United Kingdom') }
723
+
724
+ it 'should be a country instance' do
725
+ expect(uk).to be_a(ISO3166::Country)
726
+ expect(uk.alpha2).to eq('GB')
727
+ end
728
+ end
729
+
730
+ context 'when search lowercase name found' do
731
+ let(:uk) { ISO3166::Country.find_country_by_any_name('united kingdom') }
732
+
733
+ it 'should be a country instance' do
734
+ expect(uk).to be_a(ISO3166::Country)
735
+ expect(uk.alpha2).to eq('GB')
736
+ end
737
+ end
738
+
739
+ context 'when the search term contains comma' do
740
+ let(:korea) { ISO3166::Country.find_country_by_any_name('Korea, Republic of') }
741
+
742
+ it 'should be a country instance' do
743
+ expect(korea).to be_a(ISO3166::Country)
744
+ expect(korea.alpha2).to eq('KR')
745
+ end
746
+ end
747
+
748
+ context 'when search translation found' do
749
+ before do
750
+ ISO3166.configure do |config|
751
+ config.locales = [:bs]
752
+ end
753
+ end
754
+ let(:uk) { ISO3166::Country.find_country_by_any_name('Velika Britanija') }
755
+
756
+ it 'should be a country instance' do
757
+ expect(uk).to be_a(ISO3166::Country)
758
+ expect(uk.alpha2).to eq('GB')
759
+ end
760
+ end
761
+ end
762
+
678
763
  context 'regression test for #388' do
679
764
  let(:no_country) { ISO3166::Country.find_country_by_translated_names(nil) }
680
765
 
@@ -691,8 +776,9 @@ describe ISO3166::Country do
691
776
  expect { uk }.to raise_error(RuntimeError)
692
777
  end
693
778
  end
779
+
694
780
  context 'when search name not found' do
695
- let(:bogus) { ISO3166::Country.find_country_by_name('Does not exist') }
781
+ let(:bogus) { ISO3166::Country.find_country_by_unofficial_names('Does not exist') }
696
782
 
697
783
  it 'should be a country instance' do
698
784
  expect(bogus).to eq(nil)
@@ -701,7 +787,7 @@ describe ISO3166::Country do
701
787
 
702
788
  # Spot checks #243
703
789
  context 'when search name not found' do
704
- let(:belgium) { ISO3166::Country.find_country_by_name('Belgium') }
790
+ let(:belgium) { ISO3166::Country.find_country_by_unofficial_names('Belgium') }
705
791
 
706
792
  it 'should be a country instance' do
707
793
  expect(belgium.alpha2).to eq('BE')
@@ -710,7 +796,7 @@ describe ISO3166::Country do
710
796
 
711
797
  # Spot checks #240
712
798
  context 'when search name not found' do
713
- let(:canada) { ISO3166::Country.find_country_by_name('Canada') }
799
+ let(:canada) { ISO3166::Country.find_country_by_unofficial_names('Canada') }
714
800
 
715
801
  it 'should be a country instance' do
716
802
  expect(canada.alpha2).to eq('CA')
@@ -719,7 +805,7 @@ describe ISO3166::Country do
719
805
 
720
806
  # Spot checks #241
721
807
  context 'when search name not found' do
722
- let(:israel) { ISO3166::Country.find_country_by_name('Israel') }
808
+ let(:israel) { ISO3166::Country.find_country_by_unofficial_names('Israel') }
723
809
 
724
810
  it 'should be a country instance' do
725
811
  expect(israel.alpha2).to eq('IL')
@@ -728,7 +814,7 @@ describe ISO3166::Country do
728
814
 
729
815
  # Spot checks #241
730
816
  context 'when search name not found' do
731
- let(:israel) { ISO3166::Country.find_by_name('Israel') }
817
+ let(:israel) { ISO3166::Country.find_by_iso_short_name('Israel') }
732
818
 
733
819
  it 'should be a country instance' do
734
820
  expect(israel[0]).to eq('IL')
@@ -737,7 +823,7 @@ describe ISO3166::Country do
737
823
 
738
824
  # Spot checks #241
739
825
  context 'when search name not found' do
740
- let(:israel) { ISO3166::Country.find_all_by(:name, 'Israel') }
826
+ let(:israel) { ISO3166::Country.find_all_by(:iso_short_name, 'Israel') }
741
827
 
742
828
  it 'should be a country instance' do
743
829
  expect(israel.size).to eq(1)
@@ -747,8 +833,9 @@ describe ISO3166::Country do
747
833
 
748
834
  context 'when finding by invalid attribute' do
749
835
  it 'should raise an error' do
750
- expect { ISO3166::Country.find_country_by_invalid('invalid') }.to raise_error(RuntimeError,
751
- "Invalid attribute name 'invalid'")
836
+ expect { ISO3166::Country.find_country_by_invalid('invalid') }.to(
837
+ raise_error(RuntimeError, "Invalid attribute name 'invalid'")
838
+ )
752
839
  end
753
840
  end
754
841
 
@@ -770,10 +857,49 @@ describe ISO3166::Country do
770
857
  end
771
858
  end
772
859
 
860
+ describe 'finder methods respond_to_missing?' do
861
+ subject { ISO3166::Country.respond_to?(method_name) }
862
+ describe 'find_all_by' do
863
+ context 'find by a valid Country attribute' do
864
+ let(:method_name) { :find_all_by_currency }
865
+ it { is_expected.to be true }
866
+ end
867
+
868
+ context 'find by an invalid attribute' do
869
+ let(:method_name) { :find_all_by_invalid }
870
+ it { is_expected.to be false }
871
+ end
872
+ end
873
+
874
+ describe 'hash finder methods' do
875
+ context 'find by a valid Country attribute' do
876
+ let(:method_name) { :find_by_iso_short_name }
877
+ it { is_expected.to be true }
878
+ end
879
+
880
+ context 'find by an invalid attribute' do
881
+ let(:method_name) { :find_by_invalid }
882
+ it { is_expected.to be false }
883
+ end
884
+ end
885
+
886
+ describe 'country finder methods' do
887
+ context 'find country by a valid Country attribute' do
888
+ let(:method_name) { :find_country_by_alpha3 }
889
+ it { is_expected.to be true }
890
+ end
891
+
892
+ context 'find by an invalid attribute' do
893
+ let(:method_name) { :find_country_by_invalid }
894
+ it { is_expected.to be false }
895
+ end
896
+ end
897
+ end
898
+
773
899
  describe 'names in Data' do
774
- it 'should be unique (to allow .find_by_name work properly)' do
900
+ it 'should be unique (to allow .find_by_any_name work properly)' do
775
901
  names = ISO3166::Data.cache.map do |_k, v|
776
- [v['name'], v['unofficial_names']].flatten.uniq
902
+ [v['iso_short_name'], v['unofficial_names']].flatten.uniq
777
903
  end.flatten
778
904
 
779
905
  expect(names.size).to eq(names.uniq.size)
@@ -828,6 +954,23 @@ describe ISO3166::Country do
828
954
  end
829
955
  end
830
956
 
957
+ describe 'in_esm?' do
958
+ let(:netherlands) { ISO3166::Country.search('NL') }
959
+ let(:switzerland) { ISO3166::Country.search('CH') }
960
+
961
+ it 'should return false for countries without esm_member or eea_member flag' do
962
+ expect(country.in_esm?).to be_falsey
963
+ end
964
+
965
+ it 'should return true for countries with eea_member flag set to true' do
966
+ expect(netherlands.in_esm?).to be_truthy
967
+ end
968
+
969
+ it 'should return true for countries with esm_member flag set to true' do
970
+ expect(switzerland.in_esm?).to be_truthy
971
+ end
972
+ end
973
+
831
974
  describe 'gec' do
832
975
  it 'should return the country\'s GEC code' do
833
976
  expect(ISO3166::Country.new('NA').gec).to eql 'WA'
@@ -839,7 +982,7 @@ describe ISO3166::Country do
839
982
  end
840
983
 
841
984
  describe 'to_s' do
842
- it 'should return the country name' do
985
+ it 'should return the country iso_short_name' do
843
986
  expect(ISO3166::Country.new('GB').to_s).to eq('United Kingdom of Great Britain and Northern Ireland')
844
987
  end
845
988
  end
@@ -853,7 +996,7 @@ describe ISO3166::Country do
853
996
 
854
997
  it 'should contain all keys for vat_rates' do
855
998
  expect(belgium.vat_rates).to be_a(Hash)
856
- expect(belgium.vat_rates.keys).to eq(%w(standard reduced super_reduced parking))
999
+ expect(belgium.vat_rates.keys).to eq(%w[standard reduced super_reduced parking])
857
1000
  end
858
1001
 
859
1002
  it 'should return an array of reduced vat rates' do
@@ -880,30 +1023,30 @@ describe ISO3166::Country do
880
1023
 
881
1024
  describe 'Added country names to search by' do
882
1025
  it 'should return country code for Democratic Republic of the Congo' do
883
- expect(ISO3166::Country.find_country_by_name('Democratic Republic of the Congo').alpha2).to eq 'CD'
1026
+ expect(ISO3166::Country.find_country_by_unofficial_names('Democratic Republic of the Congo').alpha2).to eq 'CD'
884
1027
  end
885
1028
  it 'should return country code for Ivory Coast' do
886
- expect(ISO3166::Country.find_country_by_name('Ivory Coast').alpha2).to eq 'CI'
1029
+ expect(ISO3166::Country.find_country_by_unofficial_names('Ivory Coast').alpha2).to eq 'CI'
887
1030
  end
888
1031
  it 'should return Pakistan code for Guinea Bissau' do
889
- expect(ISO3166::Country.find_country_by_name('Guinea Bissau').alpha2).to eq 'GW'
1032
+ expect(ISO3166::Country.find_country_by_unofficial_names('Guinea Bissau').alpha2).to eq 'GW'
890
1033
  end
891
1034
  it 'should return Pakistan code for St Kitts and Nevis' do
892
- expect(ISO3166::Country.find_country_by_name('St Kitts and Nevis').alpha2).to eq 'KN'
1035
+ expect(ISO3166::Country.find_country_by_unofficial_names('St Kitts and Nevis').alpha2).to eq 'KN'
893
1036
  end
894
1037
  it 'should return Pakistan code for St Lucia' do
895
- expect(ISO3166::Country.find_country_by_name('St Lucia').alpha2).to eq 'LC'
896
- expect(ISO3166::Country.find_country_by_name('St. Lucia').alpha2).to eq 'LC'
1038
+ expect(ISO3166::Country.find_country_by_unofficial_names('St Lucia').alpha2).to eq 'LC'
1039
+ expect(ISO3166::Country.find_country_by_unofficial_names('St. Lucia').alpha2).to eq 'LC'
897
1040
  end
898
1041
  it 'should return Pakistan code for Turks and Caicos' do
899
- expect(ISO3166::Country.find_country_by_name('Turks and Caicos').alpha2).to eq 'TC'
1042
+ expect(ISO3166::Country.find_country_by_unofficial_names('Turks and Caicos').alpha2).to eq 'TC'
900
1043
  end
901
1044
  it 'should return Pakistan code for St Vincent Grenadines' do
902
- expect(ISO3166::Country.find_country_by_name('St Vincent Grenadines').alpha2).to eq 'VC'
903
- expect(ISO3166::Country.find_country_by_name('St. Vincent Grenadines').alpha2).to eq 'VC'
1045
+ expect(ISO3166::Country.find_country_by_unofficial_names('St Vincent Grenadines').alpha2).to eq 'VC'
1046
+ expect(ISO3166::Country.find_country_by_unofficial_names('St. Vincent Grenadines').alpha2).to eq 'VC'
904
1047
  end
905
1048
  it 'should return country code for Palestinian Authority' do
906
- expect(ISO3166::Country.find_country_by_name('Palestinian Authority').alpha2).to eq 'PS'
1049
+ expect(ISO3166::Country.find_country_by_unofficial_names('Palestinian Authority').alpha2).to eq 'PS'
907
1050
  end
908
1051
  end
909
1052
 
@@ -921,4 +1064,24 @@ describe ISO3166::Country do
921
1064
  expect(countries.all? { |country| country.un_locode.length == 2 }).to be
922
1065
  end
923
1066
  end
1067
+
1068
+ describe '.pluck' do
1069
+ let(:args) { [] }
1070
+
1071
+ subject { ISO3166::Country.pluck(*args) }
1072
+
1073
+ it 'returns empty arrays' do
1074
+ expect(subject.first).to be_empty
1075
+ expect(subject.last).to be_empty
1076
+ end
1077
+
1078
+ context "when asking for alpha2, alpha3 and iso_short_name" do
1079
+ let(:args) { [:alpha2, :alpha3, :iso_short_name] }
1080
+
1081
+ it 'returns the correct values' do
1082
+ expect(subject.first).to eq(%w[AD AND Andorra])
1083
+ expect(subject.last).to eq(%w[ZW ZWE Zimbabwe])
1084
+ end
1085
+ end
1086
+ end
924
1087
  end