vat.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. describe('vat', function() {
  2. beforeEach(function() {
  3. $([
  4. '<form class="form-horizontal" id="vatForm">',
  5. '<div class="form-group">',
  6. '<input type="text" name="vat" data-bv-vat />',
  7. '</div>',
  8. '</form>',
  9. ].join('\n')).appendTo('body');
  10. $('#vatForm').bootstrapValidator();
  11. /**
  12. * @type {BootstrapValidator}
  13. */
  14. this.bv = $('#vatForm').data('bootstrapValidator');
  15. this.$vat = this.bv.getFieldElements('vat');
  16. });
  17. afterEach(function() {
  18. $('#vatForm').bootstrapValidator('destroy').remove();
  19. });
  20. it('Austrian VAT number', function () {
  21. // Valid samples
  22. var validSamples = ['ATU13585627'];
  23. for (var i in validSamples) {
  24. this.bv.resetForm();
  25. this.$vat.val(validSamples[i]);
  26. this.bv.validate();
  27. expect(this.bv.isValid()).toBeTruthy();
  28. }
  29. // Invalid samples
  30. var invalidSamples = ['ATU13585626'];
  31. for (i in invalidSamples) {
  32. this.bv.resetForm();
  33. this.$vat.val(invalidSamples[i]);
  34. this.bv.validate();
  35. expect(this.bv.isValid()).toEqual(false);
  36. }
  37. });
  38. it('Belgian VAT number', function () {
  39. // Valid samples
  40. var validSamples = ['BE0428759497'];
  41. for (var i in validSamples) {
  42. this.bv.resetForm();
  43. this.$vat.val(validSamples[i]);
  44. this.bv.validate();
  45. expect(this.bv.isValid()).toBeTruthy();
  46. }
  47. // Invalid samples
  48. var invalidSamples = ['BE431150351'];
  49. for (i in invalidSamples) {
  50. this.bv.resetForm();
  51. this.$vat.val(invalidSamples[i]);
  52. this.bv.validate();
  53. expect(this.bv.isValid()).toEqual(false);
  54. }
  55. });
  56. it('Bulgarian VAT number', function () {
  57. // Valid samples
  58. var validSamples = ['BG175074752', 'BG7523169263', 'BG8032056031', 'BG7542011030', 'BG7111042925'];
  59. for (var i in validSamples) {
  60. this.bv.resetForm();
  61. this.$vat.val(validSamples[i]);
  62. this.bv.validate();
  63. expect(this.bv.isValid()).toBeTruthy();
  64. }
  65. // Invalid samples
  66. var invalidSamples = ['BG175074753', 'BG7552A10004', 'BG7111042922'];
  67. for (i in invalidSamples) {
  68. this.bv.resetForm();
  69. this.$vat.val(invalidSamples[i]);
  70. this.bv.validate();
  71. expect(this.bv.isValid()).toEqual(false);
  72. }
  73. });
  74. it('Cypriot VAT number', function () {
  75. // Valid samples
  76. var validSamples = ['CY10259033P'];
  77. for (var i in validSamples) {
  78. this.bv.resetForm();
  79. this.$vat.val(validSamples[i]);
  80. this.bv.validate();
  81. expect(this.bv.isValid()).toBeTruthy();
  82. }
  83. // Invalid samples
  84. var invalidSamples = ['CY10259033Z'];
  85. for (i in invalidSamples) {
  86. this.bv.resetForm();
  87. this.$vat.val(invalidSamples[i]);
  88. this.bv.validate();
  89. expect(this.bv.isValid()).toEqual(false);
  90. }
  91. });
  92. it('Czech Republic VAT number', function () {
  93. // Valid samples
  94. var validSamples = ['CZ25123891', 'CZ7103192745', 'CZ991231123', 'CZ640903926'];
  95. for (var i in validSamples) {
  96. this.bv.resetForm();
  97. this.$vat.val(validSamples[i]);
  98. this.bv.validate();
  99. expect(this.bv.isValid()).toBeTruthy();
  100. }
  101. // Invalid samples
  102. var invalidSamples = ['CZ25123890', 'CZ1103492745', 'CZ590312123'];
  103. for (i in invalidSamples) {
  104. this.bv.resetForm();
  105. this.$vat.val(invalidSamples[i]);
  106. this.bv.validate();
  107. expect(this.bv.isValid()).toEqual(false);
  108. }
  109. });
  110. it('German VAT number', function () {
  111. // Valid samples
  112. var validSamples = ['DE136695976'];
  113. for (var i in validSamples) {
  114. this.bv.resetForm();
  115. this.$vat.val(validSamples[i]);
  116. this.bv.validate();
  117. expect(this.bv.isValid()).toBeTruthy();
  118. }
  119. // Invalid samples
  120. var invalidSamples = ['DE136695978'];
  121. for (i in invalidSamples) {
  122. this.bv.resetForm();
  123. this.$vat.val(invalidSamples[i]);
  124. this.bv.validate();
  125. expect(this.bv.isValid()).toEqual(false);
  126. }
  127. });
  128. it('Danish VAT number', function () {
  129. // Valid samples
  130. var validSamples = ['DK13585628'];
  131. for (var i in validSamples) {
  132. this.bv.resetForm();
  133. this.$vat.val(validSamples[i]);
  134. this.bv.validate();
  135. expect(this.bv.isValid()).toBeTruthy();
  136. }
  137. // Invalid samples
  138. var invalidSamples = ['DK13585627'];
  139. for (i in invalidSamples) {
  140. this.bv.resetForm();
  141. this.$vat.val(invalidSamples[i]);
  142. this.bv.validate();
  143. expect(this.bv.isValid()).toEqual(false);
  144. }
  145. });
  146. it('Estonian VAT number', function () {
  147. // Valid samples
  148. var validSamples = ['EE100931558', 'EE100594102'];
  149. for (var i in validSamples) {
  150. this.bv.resetForm();
  151. this.$vat.val(validSamples[i]);
  152. this.bv.validate();
  153. expect(this.bv.isValid()).toBeTruthy();
  154. }
  155. // Invalid samples
  156. var invalidSamples = ['EE100594103'];
  157. for (i in invalidSamples) {
  158. this.bv.resetForm();
  159. this.$vat.val(invalidSamples[i]);
  160. this.bv.validate();
  161. expect(this.bv.isValid()).toEqual(false);
  162. }
  163. });
  164. it('Spanish VAT number (NIF)', function () {
  165. // Valid samples
  166. var validSamples = ['ES54362315K', 'ESX2482300W', 'ESX5253868R', 'ESM1234567L', 'ESJ99216582', 'ESB58378431', 'ESB64717838'];
  167. for (var i in validSamples) {
  168. this.bv.resetForm();
  169. this.$vat.val(validSamples[i]);
  170. this.bv.validate();
  171. expect(this.bv.isValid()).toBeTruthy();
  172. }
  173. // Invalid samples
  174. var invalidSamples = ['ES54362315Z', 'ESX2482300A', 'ESJ99216583'];
  175. for (i in invalidSamples) {
  176. this.bv.resetForm();
  177. this.$vat.val(invalidSamples[i]);
  178. this.bv.validate();
  179. expect(this.bv.isValid()).toEqual(false);
  180. }
  181. });
  182. it('Finnish VAT number', function () {
  183. // Valid samples
  184. var validSamples = ['FI20774740'];
  185. for (var i in validSamples) {
  186. this.bv.resetForm();
  187. this.$vat.val(validSamples[i]);
  188. this.bv.validate();
  189. expect(this.bv.isValid()).toBeTruthy();
  190. }
  191. // Invalid samples
  192. var invalidSamples = ['FI20774741'];
  193. for (i in invalidSamples) {
  194. this.bv.resetForm();
  195. this.$vat.val(invalidSamples[i]);
  196. this.bv.validate();
  197. expect(this.bv.isValid()).toEqual(false);
  198. }
  199. });
  200. it('French VAT number (TVA)', function () {
  201. // Valid samples
  202. var validSamples = ['FR40303265045', 'FR23334175221', 'FRK7399859412', 'FR4Z123456782'];
  203. for (var i in validSamples) {
  204. this.bv.resetForm();
  205. this.$vat.val(validSamples[i]);
  206. this.bv.validate();
  207. expect(this.bv.isValid()).toBeTruthy();
  208. }
  209. // Invalid samples
  210. var invalidSamples = ['FR84323140391'];
  211. for (i in invalidSamples) {
  212. this.bv.resetForm();
  213. this.$vat.val(invalidSamples[i]);
  214. this.bv.validate();
  215. expect(this.bv.isValid()).toEqual(false);
  216. }
  217. });
  218. it('United Kingdom VAT number', function () {
  219. // Valid samples
  220. var validSamples = ['GB980780684'];
  221. for (var i in validSamples) {
  222. this.bv.resetForm();
  223. this.$vat.val(validSamples[i]);
  224. this.bv.validate();
  225. expect(this.bv.isValid()).toBeTruthy();
  226. }
  227. // Invalid samples
  228. var invalidSamples = ['GB802311781'];
  229. for (i in invalidSamples) {
  230. this.bv.resetForm();
  231. this.$vat.val(invalidSamples[i]);
  232. this.bv.validate();
  233. expect(this.bv.isValid()).toEqual(false);
  234. }
  235. });
  236. it('Greek VAT number', function () {
  237. // Valid samples
  238. var validSamples = ['GR023456780', 'EL094259216'];
  239. for (var i in validSamples) {
  240. this.bv.resetForm();
  241. this.$vat.val(validSamples[i]);
  242. this.bv.validate();
  243. expect(this.bv.isValid()).toBeTruthy();
  244. }
  245. // Invalid samples
  246. var invalidSamples = ['EL123456781'];
  247. for (i in invalidSamples) {
  248. this.bv.resetForm();
  249. this.$vat.val(invalidSamples[i]);
  250. this.bv.validate();
  251. expect(this.bv.isValid()).toEqual(false);
  252. }
  253. });
  254. it('Hungarian VAT number', function () {
  255. // Valid samples
  256. var validSamples = ['HU12892312'];
  257. for (var i in validSamples) {
  258. this.bv.resetForm();
  259. this.$vat.val(validSamples[i]);
  260. this.bv.validate();
  261. expect(this.bv.isValid()).toBeTruthy();
  262. }
  263. // Invalid samples
  264. var invalidSamples = ['HU12892313'];
  265. for (i in invalidSamples) {
  266. this.bv.resetForm();
  267. this.$vat.val(invalidSamples[i]);
  268. this.bv.validate();
  269. expect(this.bv.isValid()).toEqual(false);
  270. }
  271. });
  272. it('Croatian VAT number', function () {
  273. // Valid samples
  274. var validSamples = ['HR33392005961'];
  275. for (var i in validSamples) {
  276. this.bv.resetForm();
  277. this.$vat.val(validSamples[i]);
  278. this.bv.validate();
  279. expect(this.bv.isValid()).toBeTruthy();
  280. }
  281. // Invalid samples
  282. var invalidSamples = ['HR33392005962'];
  283. for (i in invalidSamples) {
  284. this.bv.resetForm();
  285. this.$vat.val(invalidSamples[i]);
  286. this.bv.validate();
  287. expect(this.bv.isValid()).toEqual(false);
  288. }
  289. });
  290. it('Irish VAT number', function () {
  291. // Valid samples
  292. var validSamples = ['IE6433435F', 'IE6433435OA', 'IE8D79739I'];
  293. for (var i in validSamples) {
  294. this.bv.resetForm();
  295. this.$vat.val(validSamples[i]);
  296. this.bv.validate();
  297. expect(this.bv.isValid()).toBeTruthy();
  298. }
  299. // Invalid samples
  300. var invalidSamples = ['IE8D79738J'];
  301. for (i in invalidSamples) {
  302. this.bv.resetForm();
  303. this.$vat.val(invalidSamples[i]);
  304. this.bv.validate();
  305. expect(this.bv.isValid()).toEqual(false);
  306. }
  307. });
  308. it('Italian VAT number', function () {
  309. // Valid samples
  310. var validSamples = ['IT00743110157'];
  311. for (var i in validSamples) {
  312. this.bv.resetForm();
  313. this.$vat.val(validSamples[i]);
  314. this.bv.validate();
  315. expect(this.bv.isValid()).toBeTruthy();
  316. }
  317. // Invalid samples
  318. var invalidSamples = ['IT00743110158'];
  319. for (i in invalidSamples) {
  320. this.bv.resetForm();
  321. this.$vat.val(invalidSamples[i]);
  322. this.bv.validate();
  323. expect(this.bv.isValid()).toEqual(false);
  324. }
  325. });
  326. it('Lithuanian VAT number', function () {
  327. // Valid samples
  328. var validSamples = ['LT119511515', 'LT100001919017', 'LT100004801610'];
  329. for (var i in validSamples) {
  330. this.bv.resetForm();
  331. this.$vat.val(validSamples[i]);
  332. this.bv.validate();
  333. expect(this.bv.isValid()).toBeTruthy();
  334. }
  335. // Invalid samples
  336. var invalidSamples = ['LT100001919018'];
  337. for (i in invalidSamples) {
  338. this.bv.resetForm();
  339. this.$vat.val(invalidSamples[i]);
  340. this.bv.validate();
  341. expect(this.bv.isValid()).toEqual(false);
  342. }
  343. });
  344. it('Luxembourg VAT number', function () {
  345. // Valid samples
  346. var validSamples = ['LU15027442'];
  347. for (var i in validSamples) {
  348. this.bv.resetForm();
  349. this.$vat.val(validSamples[i]);
  350. this.bv.validate();
  351. expect(this.bv.isValid()).toBeTruthy();
  352. }
  353. // Invalid samples
  354. var invalidSamples = ['LU15027443'];
  355. for (i in invalidSamples) {
  356. this.bv.resetForm();
  357. this.$vat.val(invalidSamples[i]);
  358. this.bv.validate();
  359. expect(this.bv.isValid()).toEqual(false);
  360. }
  361. });
  362. it('Latvian VAT number', function () {
  363. // Valid samples
  364. var validSamples = ['LV40003521600', 'LV16117519997'];
  365. for (var i in validSamples) {
  366. this.bv.resetForm();
  367. this.$vat.val(validSamples[i]);
  368. this.bv.validate();
  369. expect(this.bv.isValid()).toBeTruthy();
  370. }
  371. // Invalid samples
  372. var invalidSamples = ['LV40003521601', 'LV16137519997'];
  373. for (i in invalidSamples) {
  374. this.bv.resetForm();
  375. this.$vat.val(invalidSamples[i]);
  376. this.bv.validate();
  377. expect(this.bv.isValid()).toEqual(false);
  378. }
  379. });
  380. it('Maltese VAT number', function () {
  381. // Valid samples
  382. var validSamples = ['MT11679112'];
  383. for (var i in validSamples) {
  384. this.bv.resetForm();
  385. this.$vat.val(validSamples[i]);
  386. this.bv.validate();
  387. expect(this.bv.isValid()).toBeTruthy();
  388. }
  389. // Invalid samples
  390. var invalidSamples = ['MT11679113'];
  391. for (i in invalidSamples) {
  392. this.bv.resetForm();
  393. this.$vat.val(invalidSamples[i]);
  394. this.bv.validate();
  395. expect(this.bv.isValid()).toEqual(false);
  396. }
  397. });
  398. it('Dutch VAT number', function () {
  399. // Valid samples
  400. var validSamples = ['NL004495445B01'];
  401. for (var i in validSamples) {
  402. this.bv.resetForm();
  403. this.$vat.val(validSamples[i]);
  404. this.bv.validate();
  405. expect(this.bv.isValid()).toBeTruthy();
  406. }
  407. // Invalid samples
  408. var invalidSamples = ['NL123456789B90'];
  409. for (i in invalidSamples) {
  410. this.bv.resetForm();
  411. this.$vat.val(invalidSamples[i]);
  412. this.bv.validate();
  413. expect(this.bv.isValid()).toEqual(false);
  414. }
  415. });
  416. it('Polish VAT number', function () {
  417. // Valid samples
  418. var validSamples = ['PL8567346215'];
  419. for (var i in validSamples) {
  420. this.bv.resetForm();
  421. this.$vat.val(validSamples[i]);
  422. this.bv.validate();
  423. expect(this.bv.isValid()).toBeTruthy();
  424. }
  425. // Invalid samples
  426. var invalidSamples = ['PL8567346216'];
  427. for (i in invalidSamples) {
  428. this.bv.resetForm();
  429. this.$vat.val(invalidSamples[i]);
  430. this.bv.validate();
  431. expect(this.bv.isValid()).toEqual(false);
  432. }
  433. });
  434. it('Portuguese VAT number', function () {
  435. // Valid samples
  436. var validSamples = ['PT501964843'];
  437. for (var i in validSamples) {
  438. this.bv.resetForm();
  439. this.$vat.val(validSamples[i]);
  440. this.bv.validate();
  441. expect(this.bv.isValid()).toBeTruthy();
  442. }
  443. // Invalid samples
  444. var invalidSamples = ['PT501964842'];
  445. for (i in invalidSamples) {
  446. this.bv.resetForm();
  447. this.$vat.val(invalidSamples[i]);
  448. this.bv.validate();
  449. expect(this.bv.isValid()).toEqual(false);
  450. }
  451. });
  452. it('Romanian VAT number', function () {
  453. // Valid samples
  454. var validSamples = ['RO18547290'];
  455. for (var i in validSamples) {
  456. this.bv.resetForm();
  457. this.$vat.val(validSamples[i]);
  458. this.bv.validate();
  459. expect(this.bv.isValid()).toBeTruthy();
  460. }
  461. // Invalid samples
  462. var invalidSamples = ['RO18547291'];
  463. for (i in invalidSamples) {
  464. this.bv.resetForm();
  465. this.$vat.val(invalidSamples[i]);
  466. this.bv.validate();
  467. expect(this.bv.isValid()).toEqual(false);
  468. }
  469. });
  470. it('Swedish VAT number', function () {
  471. // Valid samples
  472. var validSamples = ['SE123456789701'];
  473. for (var i in validSamples) {
  474. this.bv.resetForm();
  475. this.$vat.val(validSamples[i]);
  476. this.bv.validate();
  477. expect(this.bv.isValid()).toBeTruthy();
  478. }
  479. // Invalid samples
  480. var invalidSamples = ['SE123456789101'];
  481. for (i in invalidSamples) {
  482. this.bv.resetForm();
  483. this.$vat.val(invalidSamples[i]);
  484. this.bv.validate();
  485. expect(this.bv.isValid()).toEqual(false);
  486. }
  487. });
  488. it('Slovenian VAT number', function () {
  489. // Valid samples
  490. var validSamples = ['SI50223054'];
  491. for (var i in validSamples) {
  492. this.bv.resetForm();
  493. this.$vat.val(validSamples[i]);
  494. this.bv.validate();
  495. expect(this.bv.isValid()).toBeTruthy();
  496. }
  497. // Invalid samples
  498. var invalidSamples = ['SI50223055'];
  499. for (i in invalidSamples) {
  500. this.bv.resetForm();
  501. this.$vat.val(invalidSamples[i]);
  502. this.bv.validate();
  503. expect(this.bv.isValid()).toEqual(false);
  504. }
  505. });
  506. it('Slovak VAT number', function () {
  507. // Valid samples
  508. var validSamples = ['SK2022749619'];
  509. for (var i in validSamples) {
  510. this.bv.resetForm();
  511. this.$vat.val(validSamples[i]);
  512. this.bv.validate();
  513. expect(this.bv.isValid()).toBeTruthy();
  514. }
  515. // Invalid samples
  516. var invalidSamples = ['SK2022749618'];
  517. for (i in invalidSamples) {
  518. this.bv.resetForm();
  519. this.$vat.val(invalidSamples[i]);
  520. this.bv.validate();
  521. expect(this.bv.isValid()).toEqual(false);
  522. }
  523. });
  524. });