test-language.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. /* global describe,it */
  2. var getSlug = require('../lib/speakingurl');
  3. describe('getSlug languages', function () {
  4. 'use strict';
  5. it('should replace language specific symbols', function (done) {
  6. var symbolMap = {
  7. 'ar': {
  8. '∆': 'delta',
  9. '∞': 'la-nihaya',
  10. '♥': 'hob',
  11. '&': 'wa',
  12. '|': 'aw',
  13. '<': 'aqal-men',
  14. '>': 'akbar-men',
  15. '∑': 'majmou',
  16. '¤': 'omla'
  17. },
  18. 'cs': {
  19. '∆': 'delta',
  20. '∞': 'nekonecno',
  21. '♥': 'laska',
  22. '&': 'a',
  23. '|': 'nebo',
  24. '<': 'mensi nez',
  25. '>': 'vetsi nez',
  26. '∑': 'soucet',
  27. '¤': 'mena'
  28. },
  29. 'de': {
  30. '∆': 'delta',
  31. '∞': 'unendlich',
  32. '♥': 'Liebe',
  33. '&': 'und',
  34. '|': 'oder',
  35. '<': 'kleiner als',
  36. '>': 'groesser als',
  37. '∑': 'Summe von',
  38. '¤': 'Waehrung'
  39. },
  40. 'en': {
  41. '∆': 'delta',
  42. '∞': 'infinity',
  43. '♥': 'love',
  44. '&': 'and',
  45. '|': 'or',
  46. '<': 'less than',
  47. '>': 'greater than',
  48. '∑': 'sum',
  49. '¤': 'currency'
  50. },
  51. 'es': {
  52. '∆': 'delta',
  53. '∞': 'infinito',
  54. '♥': 'amor',
  55. '&': 'y',
  56. '|': 'u',
  57. '<': 'menos que',
  58. '>': 'mas que',
  59. '∑': 'suma de los',
  60. '¤': 'moneda'
  61. },
  62. 'fr': {
  63. '∆': 'delta',
  64. '∞': 'infiniment',
  65. '♥': 'Amour',
  66. '&': 'et',
  67. '|': 'ou',
  68. '<': 'moins que',
  69. '>': 'superieure a',
  70. '∑': 'somme des',
  71. '¤': 'monnaie'
  72. },
  73. 'hu': {
  74. '∆': 'delta',
  75. '∞': 'vegtelen',
  76. '♥': 'szerelem',
  77. '&': 'es',
  78. '|': 'vagy',
  79. '<': 'kisebb mint',
  80. '>': 'nagyobb mint',
  81. '∑': 'szumma',
  82. '¤': 'penznem'
  83. },
  84. 'my': {
  85. '∆': 'kwahkhyaet',
  86. '∞': 'asaonasme',
  87. '♥': 'akhyait',
  88. '&': 'nhin',
  89. '|': 'tho',
  90. '<': 'ngethaw',
  91. '>': 'kyithaw',
  92. '∑': 'paungld',
  93. '¤': 'ngwekye'
  94. },
  95. 'nl': {
  96. '∆': 'delta',
  97. '∞': 'oneindig',
  98. '♥': 'liefde',
  99. '&': 'en',
  100. '|': 'of',
  101. '<': 'kleiner dan',
  102. '>': 'groter dan',
  103. '∑': 'som',
  104. '¤': 'valuta'
  105. },
  106. 'it': {
  107. '∆': 'delta',
  108. '∞': 'infinito',
  109. '♥': 'amore',
  110. '&': 'e',
  111. '|': 'o',
  112. '<': 'minore di',
  113. '>': 'maggiore di',
  114. '∑': 'somma',
  115. '¤': 'moneta'
  116. },
  117. 'pl': {
  118. '∆': 'delta',
  119. '∞': 'nieskonczonosc',
  120. '♥': 'milosc',
  121. '&': 'i',
  122. '|': 'lub',
  123. '<': 'mniejsze niz',
  124. '>': 'wieksze niz',
  125. '∑': 'suma',
  126. '¤': 'waluta'
  127. },
  128. 'pt': {
  129. '∆': 'delta',
  130. '∞': 'infinito',
  131. '♥': 'amor',
  132. '&': 'e',
  133. '|': 'ou',
  134. '<': 'menor que',
  135. '>': 'maior que',
  136. '∑': 'soma',
  137. '¤': 'moeda'
  138. },
  139. 'ru': {
  140. '∆': 'delta',
  141. '∞': 'beskonechno',
  142. '♥': 'lubov',
  143. '&': 'i',
  144. '|': 'ili',
  145. '<': 'menshe',
  146. '>': 'bolshe',
  147. '∑': 'summa',
  148. '¤': 'valjuta'
  149. },
  150. 'sk': {
  151. '∆': 'delta',
  152. '∞': 'nekonecno',
  153. '♥': 'laska',
  154. '&': 'a',
  155. '|': 'alebo',
  156. '<': 'menej ako',
  157. '>': 'viac ako',
  158. '∑': 'sucet',
  159. '¤': 'mena'
  160. },
  161. 'tr': {
  162. '∆': 'delta',
  163. '∞': 'sonsuzluk',
  164. '♥': 'ask',
  165. '&': 've',
  166. '|': 'veya',
  167. '<': 'kucuktur',
  168. '>': 'buyuktur',
  169. '∑': 'toplam',
  170. '¤': 'para birimi'
  171. },
  172. 'vn': {
  173. '∆': 'delta',
  174. '∞': 'vo cuc',
  175. '♥': 'yeu',
  176. '&': 'va',
  177. '|': 'hoac',
  178. '<': 'nho hon',
  179. '>': 'lon hon',
  180. '∑': 'tong',
  181. '¤': 'tien te'
  182. }
  183. };
  184. Object.keys(symbolMap)
  185. .forEach(function (l) {
  186. // console.log('\ncheck language: ' + l);
  187. Object.keys(symbolMap[l])
  188. .forEach(function (s) {
  189. var k = symbolMap[l][s];
  190. // console.log('check symbol: ' + s);
  191. getSlug('Foo ' + s + ' Bar', {
  192. lang: l,
  193. maintainCase: true
  194. })
  195. .should.eql('Foo-' + getSlug(k, {
  196. maintainCase: true
  197. }) + '-Bar');
  198. getSlug('Foo ' + s + ' Bar', {
  199. lang: l
  200. })
  201. .should.eql('foo-' + getSlug(k) + '-bar');
  202. });
  203. });
  204. getSlug('EN Foo & Bar ')
  205. .should.eql('en-foo-and-bar');
  206. getSlug('EN Foo & Bar ', {
  207. lang: "en"
  208. })
  209. .should.eql('en-foo-and-bar');
  210. getSlug('de Foo & Bar ', {
  211. lang: "de"
  212. })
  213. .should.eql('de-foo-und-bar');
  214. getSlug('True Foo & Bar ', {
  215. lang: true
  216. })
  217. .should.eql('true-foo-and-bar');
  218. getSlug('False Foo & Bar ', {
  219. lang: false
  220. })
  221. .should.eql('false-foo-bar');
  222. getSlug('False Foo & Bar ', {
  223. lang: false,
  224. symbols: true
  225. })
  226. .should.eql('false-foo-bar');
  227. getSlug('xx Foo & Bar ', {
  228. lang: "xx"
  229. })
  230. .should.eql('xx-foo-and-bar');
  231. getSlug('obj Foo & Bar ', {
  232. lang: {}
  233. })
  234. .should.eql('obj-foo-and-bar');
  235. getSlug('array Foo & Bar ', {
  236. lang: []
  237. })
  238. .should.eql('array-foo-and-bar');
  239. getSlug('array Foo & Bar ', {
  240. lang: [],
  241. symbols: false
  242. })
  243. .should.eql('array-foo-bar');
  244. getSlug('null Foo & Bar ', {
  245. lang: null
  246. })
  247. .should.eql('null-foo-and-bar');
  248. getSlug('null Foo & Bar ', {
  249. lang: null,
  250. symbols: false
  251. })
  252. .should.eql('null-foo-bar');
  253. getSlug('null Foo & Bar ', {
  254. lang: null,
  255. symbols: true
  256. })
  257. .should.eql('null-foo-and-bar');
  258. done();
  259. });
  260. });