spec.js 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167
  1. function onEmailValid(e, data) {
  2. $('#msg').html(data.field + ' is valid');
  3. };
  4. function onEmailInvalid(e, data) {
  5. $('#msg').html(data.field + ' is invalid');
  6. };
  7. describe('event field attribute callback global', function() {
  8. beforeEach(function() {
  9. var html = [
  10. '<div class="container">',
  11. '<form class="form-horizontal" id="form">',
  12. '<div id="msg"></div>',
  13. '<div class="form-group">',
  14. '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="onEmailValid" data-bv-onerror="onEmailInvalid" />',
  15. '</div>',
  16. '</form>',
  17. '</div>'
  18. ].join('\n');
  19. $(html).appendTo('body');
  20. $('#form').bootstrapValidator();
  21. this._bs = $('#form').data('bootstrapValidator');
  22. this._$field = this._bs.getFieldElements('email');
  23. });
  24. afterEach(function() {
  25. $('#form').bootstrapValidator('destroy').remove();
  26. });
  27. it('call data-bv-onsuccess', function() {
  28. this._$field.val('email@domain.com');
  29. this._bs.validate();
  30. expect($('#msg').html()).toEqual('email is valid');
  31. });
  32. it('call data-bv-onerror', function() {
  33. this._$field.val('email@domain');
  34. this._bs.validate();
  35. expect($('#msg').html()).toEqual('email is invalid');
  36. });
  37. });
  38. var My = {
  39. NameSpace: {
  40. onEmailValid: function(e, data) {
  41. $('#msg').html('My.NameSpace.onEmailValid() called, ' + data.field + ' is valid');
  42. },
  43. onEmailInvalid: function(e, data) {
  44. $('#msg').html('My.NameSpace.onEmailInvalid() called, ' + data.field + ' is invalid');
  45. }
  46. }
  47. };
  48. describe('event field attribute callback namespace', function() {
  49. beforeEach(function() {
  50. var html = [
  51. '<div class="container">',
  52. '<form class="form-horizontal" id="form">',
  53. '<div id="msg"></div>',
  54. '<div class="form-group">',
  55. '<input type="text" name="email" data-bv-emailaddress data-bv-onsuccess="My.NameSpace.onEmailValid" data-bv-onerror="My.NameSpace.onEmailInvalid" />',
  56. '</div>',
  57. '</form>',
  58. '</div>'
  59. ].join('\n');
  60. $(html).appendTo('body');
  61. $('#form').bootstrapValidator();
  62. this._bs = $('#form').data('bootstrapValidator');
  63. this._$field = this._bs.getFieldElements('email');
  64. });
  65. afterEach(function() {
  66. $('#form').bootstrapValidator('destroy').remove();
  67. });
  68. it('call data-bv-onsuccess', function() {
  69. this._$field.val('email@domain.com');
  70. this._bs.validate();
  71. expect($('#msg').html()).toEqual('My.NameSpace.onEmailValid() called, email is valid');
  72. });
  73. it('call data-bv-onerror', function() {
  74. this._$field.val('email@domain');
  75. this._bs.validate();
  76. expect($('#msg').html()).toEqual('My.NameSpace.onEmailInvalid() called, email is invalid');
  77. });
  78. });
  79. describe('event field trigger', function() {
  80. beforeEach(function() {
  81. var html = [
  82. '<div class="container">',
  83. '<form class="form-horizontal" id="form">',
  84. '<div id="msg"></div>',
  85. '<div class="form-group">',
  86. '<input type="text" name="email" data-bv-emailaddress />',
  87. '</div>',
  88. '</form>',
  89. '</div>'
  90. ].join('\n');
  91. $(html).appendTo('body');
  92. $('#form')
  93. .bootstrapValidator()
  94. .on('success.field.bv', '[name="email"]', function(e, data) {
  95. $('#msg').html('triggered success.field.bv on ' + data.field);
  96. })
  97. .on('error.field.bv', '[name="email"]', function(e, data) {
  98. $('#msg').html('triggered error.field.bv on ' + data.field);
  99. });
  100. this._bs = $('#form').data('bootstrapValidator');
  101. this._$field = this._bs.getFieldElements('email');
  102. });
  103. afterEach(function() {
  104. $('#form').bootstrapValidator('destroy').remove();
  105. });
  106. it('trigger success.field.bv', function() {
  107. this._$field.val('email@domain.com');
  108. this._bs.validate();
  109. expect($('#msg').html()).toEqual('triggered success.field.bv on email');
  110. });
  111. it('trigger error.field.bv', function() {
  112. this._$field.val('email@domain');
  113. this._bs.validate();
  114. expect($('#msg').html()).toEqual('triggered error.field.bv on email');
  115. });
  116. });
  117. describe('event field programmatically', function() {
  118. beforeEach(function() {
  119. var html = [
  120. '<div class="container">',
  121. '<form class="form-horizontal" id="form">',
  122. '<div id="msg"></div>',
  123. '<div class="form-group">',
  124. '<input type="text" name="email" data-bv-emailaddress />',
  125. '</div>',
  126. '</form>',
  127. '</div>'
  128. ].join('\n');
  129. $(html).appendTo('body');
  130. $('#form').bootstrapValidator({
  131. fields: {
  132. email: {
  133. onSuccess: function(e, data) {
  134. $('#msg').html('onSuccess() called');
  135. },
  136. onError: function(e, data) {
  137. $('#msg').html('onError() called');
  138. },
  139. validator: {
  140. emailAddress: {}
  141. }
  142. }
  143. }
  144. });
  145. this._bs = $('#form').data('bootstrapValidator');
  146. this._$field = this._bs.getFieldElements('email');
  147. });
  148. afterEach(function() {
  149. $('#form').bootstrapValidator('destroy').remove();
  150. });
  151. it('call onSuccess()', function() {
  152. this._$field.val('email@domain.com');
  153. this._bs.validate();
  154. expect($('#msg').html()).toEqual('onSuccess() called');
  155. });
  156. it('call onError()', function() {
  157. this._$field.val('email@domain');
  158. this._bs.validate();
  159. expect($('#msg').html()).toEqual('onError() called');
  160. });
  161. });
  162. describe('creditCard', function() {
  163. // Get the fake credit card number at http://www.getcreditcardnumbers.com/
  164. // Override the default options
  165. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  166. feedbackIcons: {
  167. valid: 'glyphicon glyphicon-ok',
  168. invalid: 'glyphicon glyphicon-remove',
  169. validating: 'glyphicon glyphicon-refresh'
  170. }
  171. });
  172. beforeEach(function() {
  173. var html = [
  174. '<div class="container">',
  175. '<form class="form-horizontal" id="form">',
  176. '<div class="form-group">',
  177. '<input type="text" name="cc" data-bv-creditcard />',
  178. '</div>',
  179. '</form>',
  180. '</div>'
  181. ].join('\n');
  182. $(html).appendTo('body');
  183. $('#form').bootstrapValidator();
  184. this._bs = $('#form').data('bootstrapValidator');
  185. this._$field = this._bs.getFieldElements('cc');
  186. });
  187. afterEach(function() {
  188. $('#form').bootstrapValidator('destroy').remove();
  189. });
  190. it('accept spaces', function() {
  191. this._$field.val('5267 9789 9451 9654');
  192. this._bs.validate();
  193. expect(this._bs.isValidField('cc')).toBeTruthy();
  194. });
  195. it('accept dashes', function() {
  196. this._$field.val('6011-2649-6840-4521');
  197. this._bs.validate();
  198. expect(this._bs.isValidField('cc')).toBeTruthy();
  199. });
  200. it('invalid format', function() {
  201. this._$field.val('4539.1870.2954.3862');
  202. this._bs.validate();
  203. expect(this._bs.isValidField('cc')).toEqual(false);
  204. });
  205. it('American Express', function() {
  206. this._$field.val('340653705597107');
  207. this._bs.validate();
  208. expect(this._bs.isValidField('cc')).toBeTruthy();
  209. });
  210. it('American Express invalid length', function() {
  211. this._$field.val('3744148309166730');
  212. this._bs.validate();
  213. expect(this._bs.isValidField('cc')).toEqual(false);
  214. });
  215. it('American Express invalid prefix', function() {
  216. this._$field.val('356120148436654');
  217. this._bs.validate();
  218. expect(this._bs.isValidField('cc')).toEqual(false);
  219. });
  220. it('Diners Club', function() {
  221. this._$field.val('30130708434187');
  222. this._bs.validate();
  223. expect(this._bs.isValidField('cc')).toBeTruthy();
  224. });
  225. it('Diners Club (US)', function() {
  226. this._$field.val('5517479515603901');
  227. this._bs.validate();
  228. expect(this._bs.isValidField('cc')).toBeTruthy();
  229. });
  230. it('Discover', function() {
  231. this._$field.val('6011734674929094');
  232. this._bs.validate();
  233. expect(this._bs.isValidField('cc')).toBeTruthy();
  234. });
  235. it('JCB', function() {
  236. this._$field.val('3566002020360505');
  237. this._bs.validate();
  238. expect(this._bs.isValidField('cc')).toBeTruthy();
  239. });
  240. it('Laser', function() {
  241. this._$field.val('6304 9000 1774 0292 441');
  242. this._bs.validate();
  243. expect(this._bs.isValidField('cc')).toBeTruthy();
  244. });
  245. it('Maestro', function() {
  246. this._$field.val('6762835098779303');
  247. this._bs.validate();
  248. expect(this._bs.isValidField('cc')).toBeTruthy();
  249. });
  250. it('Mastercard', function() {
  251. this._$field.val('5303765013600904');
  252. this._bs.validate();
  253. expect(this._bs.isValidField('cc')).toBeTruthy();
  254. });
  255. it('Solo', function() {
  256. this._$field.val('6334580500000000');
  257. this._bs.validate();
  258. expect(this._bs.isValidField('cc')).toBeTruthy();
  259. });
  260. it('Visa', function() {
  261. this._$field.val('4929248980295542');
  262. this._bs.validate();
  263. expect(this._bs.isValidField('cc')).toBeTruthy();
  264. });
  265. it('Visa invalid check digit', function() {
  266. this._$field.val('4532599916257826');
  267. this._bs.validate();
  268. expect(this._bs.isValidField('cc')).toEqual(false);
  269. });
  270. });
  271. describe('ean', function() {
  272. // Override the default options
  273. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  274. feedbackIcons: {
  275. valid: 'glyphicon glyphicon-ok',
  276. invalid: 'glyphicon glyphicon-remove',
  277. validating: 'glyphicon glyphicon-refresh'
  278. }
  279. });
  280. beforeEach(function() {
  281. var html = [
  282. '<div class="container">',
  283. '<form class="form-horizontal" id="form">',
  284. '<div class="form-group">',
  285. '<input type="text" name="ean" data-bv-ean />',
  286. '</div>',
  287. '</form>',
  288. '</div>'
  289. ].join('\n');
  290. $(html).appendTo('body');
  291. $('#form').bootstrapValidator();
  292. this._bs = $('#form').data('bootstrapValidator');
  293. this._$field = this._bs.getFieldElements('ean');
  294. });
  295. afterEach(function() {
  296. $('#form').bootstrapValidator('destroy').remove();
  297. });
  298. it('valid', function() {
  299. var samples = ['73513537', '9780471117094', '4006381333931'];
  300. for (var i in samples) {
  301. this._$field.val(samples[i]);
  302. this._bs.validate();
  303. expect(this._bs.isValidField('ean')).toBeTruthy();
  304. }
  305. });
  306. it('contains only digits', function() {
  307. this._$field.val('123abcDEF!@#');
  308. this._bs.validate();
  309. expect(this._bs.isValidField('ean')).toEqual(false);
  310. });
  311. it('invalid length', function() {
  312. this._$field.val('1234567');
  313. this._bs.validate();
  314. expect(this._bs.isValidField('ean')).toEqual(false);
  315. });
  316. it('invalid check digit', function() {
  317. this._$field.val('73513536');
  318. this._bs.validate();
  319. expect(this._bs.isValidField('ean')).toEqual(false);
  320. });
  321. });
  322. describe('iban', function() {
  323. // Override the default options
  324. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  325. feedbackIcons: {
  326. valid: 'glyphicon glyphicon-ok',
  327. invalid: 'glyphicon glyphicon-remove',
  328. validating: 'glyphicon glyphicon-refresh'
  329. }
  330. });
  331. beforeEach(function() {
  332. var html = [
  333. '<div class="container">',
  334. '<form class="form-horizontal" id="form">',
  335. '<div class="form-group">',
  336. '<input type="text" name="iban" data-bv-iban />',
  337. '</div>',
  338. '</form>',
  339. '</div>'
  340. ].join('\n');
  341. $(html).appendTo('body');
  342. $('#form').bootstrapValidator();
  343. this._bs = $('#form').data('bootstrapValidator');
  344. this._$field = this._bs.getFieldElements('iban');
  345. });
  346. afterEach(function() {
  347. $('#form').bootstrapValidator('destroy').remove();
  348. });
  349. it('not supported country', function() {
  350. this._$field.val('US123456789');
  351. this._bs.validate();
  352. expect(this._bs.isValidField('iban')).toEqual(false);
  353. });
  354. it('Albania', function() {
  355. this._$field.val('AL47212110090000000235698741');
  356. this._bs.validate();
  357. expect(this._bs.isValidField('iban')).toBeTruthy();
  358. });
  359. it('Algeria', function() {
  360. this._$field.val('DZ4000400174401001050486');
  361. this._bs.validate();
  362. expect(this._bs.isValidField('iban')).toBeTruthy();
  363. });
  364. it('Andorra', function() {
  365. this._$field.val('AD1200012030200359100100');
  366. this._bs.validate();
  367. expect(this._bs.isValidField('iban')).toBeTruthy();
  368. });
  369. it('Angola', function() {
  370. this._$field.val('AO06000600000100037131174');
  371. this._bs.validate();
  372. expect(this._bs.isValidField('iban')).toBeTruthy();
  373. });
  374. it('Austria', function() {
  375. this._$field.val('AT611904300234573201');
  376. this._bs.validate();
  377. expect(this._bs.isValidField('iban')).toBeTruthy();
  378. });
  379. it('Azerbaijan', function() {
  380. this._$field.val('AZ21NABZ00000000137010001944');
  381. this._bs.validate();
  382. expect(this._bs.isValidField('iban')).toBeTruthy();
  383. });
  384. it('Bahrain', function() {
  385. this._$field.val('BH29BMAG1299123456BH00');
  386. this._bs.validate();
  387. expect(this._bs.isValidField('iban')).toBeTruthy();
  388. });
  389. it('Belgium', function() {
  390. this._$field.val('BE68539007547034');
  391. this._bs.validate();
  392. expect(this._bs.isValidField('iban')).toBeTruthy();
  393. });
  394. it('Benin', function() {
  395. this._$field.val('BJ11B00610100400271101192591');
  396. this._bs.validate();
  397. expect(this._bs.isValidField('iban')).toBeTruthy();
  398. });
  399. it('Brazil', function() {
  400. this._$field.val('BR9700360305000010009795493P1');
  401. this._bs.validate();
  402. expect(this._bs.isValidField('iban')).toBeTruthy();
  403. });
  404. it('Bulgaria', function() {
  405. this._$field.val('BG80BNBG96611020345678');
  406. this._bs.validate();
  407. expect(this._bs.isValidField('iban')).toBeTruthy();
  408. });
  409. it('Burkina Faso', function() {
  410. this._$field.val('BF1030134020015400945000643');
  411. this._bs.validate();
  412. expect(this._bs.isValidField('iban')).toBeTruthy();
  413. });
  414. it('Burundi', function() {
  415. this._$field.val('BI43201011067444');
  416. this._bs.validate();
  417. expect(this._bs.isValidField('iban')).toBeTruthy();
  418. });
  419. it('Cameroon', function() {
  420. this._$field.val('CM2110003001000500000605306');
  421. this._bs.validate();
  422. expect(this._bs.isValidField('iban')).toBeTruthy();
  423. });
  424. it('Cape Verde', function() {
  425. this._$field.val('CV64000300004547069110176');
  426. this._bs.validate();
  427. expect(this._bs.isValidField('iban')).toBeTruthy();
  428. });
  429. it('Costa Rica', function() {
  430. this._$field.val('CR0515202001026284066');
  431. this._bs.validate();
  432. expect(this._bs.isValidField('iban')).toBeTruthy();
  433. });
  434. it('Croatia', function() {
  435. this._$field.val('HR1210010051863000160');
  436. this._bs.validate();
  437. expect(this._bs.isValidField('iban')).toBeTruthy();
  438. });
  439. it('Cyprus', function() {
  440. this._$field.val('CY17002001280000001200527600');
  441. this._bs.validate();
  442. expect(this._bs.isValidField('iban')).toBeTruthy();
  443. });
  444. it('Czech Republic', function() {
  445. this._$field.val('CZ6508000000192000145399');
  446. this._bs.validate();
  447. expect(this._bs.isValidField('iban')).toBeTruthy();
  448. });
  449. it('Denmark', function() {
  450. this._$field.val('DK5000400440116243');
  451. this._bs.validate();
  452. expect(this._bs.isValidField('iban')).toBeTruthy();
  453. });
  454. it('Dominican Republic', function() {
  455. this._$field.val('DO28BAGR00000001212453611324');
  456. this._bs.validate();
  457. expect(this._bs.isValidField('iban')).toBeTruthy();
  458. });
  459. it('Estonia', function() {
  460. this._$field.val('EE382200221020145685');
  461. this._bs.validate();
  462. expect(this._bs.isValidField('iban')).toBeTruthy();
  463. });
  464. it('Faroe Islands', function() {
  465. this._$field.val('FO1464600009692713');
  466. this._bs.validate();
  467. expect(this._bs.isValidField('iban')).toBeTruthy();
  468. });
  469. it('Finland', function() {
  470. this._$field.val('FI2112345600000785');
  471. this._bs.validate();
  472. expect(this._bs.isValidField('iban')).toBeTruthy();
  473. });
  474. it('France', function() {
  475. this._$field.val('FR1420041010050500013M02606');
  476. this._bs.validate();
  477. expect(this._bs.isValidField('iban')).toBeTruthy();
  478. });
  479. it('Guatemala', function() {
  480. this._$field.val('GT82TRAJ01020000001210029690');
  481. this._bs.validate();
  482. expect(this._bs.isValidField('iban')).toBeTruthy();
  483. });
  484. it('Georgia', function() {
  485. this._$field.val('GE29NB0000000101904917');
  486. this._bs.validate();
  487. expect(this._bs.isValidField('iban')).toBeTruthy();
  488. });
  489. it('Germany', function() {
  490. this._$field.val('DE89370400440532013000');
  491. this._bs.validate();
  492. expect(this._bs.isValidField('iban')).toBeTruthy();
  493. });
  494. it('Gibraltar', function() {
  495. this._$field.val('GI75NWBK000000007099453');
  496. this._bs.validate();
  497. expect(this._bs.isValidField('iban')).toBeTruthy();
  498. });
  499. it('Greece', function() {
  500. this._$field.val('GR1601101250000000012300695');
  501. this._bs.validate();
  502. expect(this._bs.isValidField('iban')).toBeTruthy();
  503. });
  504. it('Greenland', function() {
  505. this._$field.val('GL8964710001000206');
  506. this._bs.validate();
  507. expect(this._bs.isValidField('iban')).toBeTruthy();
  508. });
  509. it('Hungary', function() {
  510. this._$field.val('HU42117730161111101800000000');
  511. this._bs.validate();
  512. expect(this._bs.isValidField('iban')).toBeTruthy();
  513. });
  514. it('Iceland', function() {
  515. this._$field.val('IS140159260076545510730339');
  516. this._bs.validate();
  517. expect(this._bs.isValidField('iban')).toBeTruthy();
  518. });
  519. it('Iran', function() {
  520. this._$field.val('IR580540105180021273113007');
  521. this._bs.validate();
  522. expect(this._bs.isValidField('iban')).toBeTruthy();
  523. });
  524. it('Ireland', function() {
  525. this._$field.val('IE29AIBK93115212345678');
  526. this._bs.validate();
  527. expect(this._bs.isValidField('iban')).toBeTruthy();
  528. });
  529. it('Israel', function() {
  530. this._$field.val('IL620108000000099999999');
  531. this._bs.validate();
  532. expect(this._bs.isValidField('iban')).toBeTruthy();
  533. });
  534. it('Italy', function() {
  535. this._$field.val('IT60X0542811101000000123456');
  536. this._bs.validate();
  537. expect(this._bs.isValidField('iban')).toBeTruthy();
  538. });
  539. it('Ivory Coast', function() {
  540. this._$field.val('CI05A00060174100178530011852');
  541. this._bs.validate();
  542. expect(this._bs.isValidField('iban')).toBeTruthy();
  543. });
  544. it('Jordan', function() {
  545. this._$field.val('JO94CBJO0010000000000131000302');
  546. this._bs.validate();
  547. expect(this._bs.isValidField('iban')).toBeTruthy();
  548. });
  549. it('Kazakhstan', function() {
  550. this._$field.val('KZ176010251000042993');
  551. this._bs.validate();
  552. expect(this._bs.isValidField('iban')).toBeTruthy();
  553. });
  554. it('Kuwait', function() {
  555. this._$field.val('KW74NBOK0000000000001000372151');
  556. this._bs.validate();
  557. expect(this._bs.isValidField('iban')).toBeTruthy();
  558. });
  559. it('Latvia', function() {
  560. this._$field.val('LV80BANK0000435195001');
  561. this._bs.validate();
  562. expect(this._bs.isValidField('iban')).toBeTruthy();
  563. });
  564. it('Lebanon', function() {
  565. this._$field.val('LB30099900000001001925579115');
  566. this._bs.validate();
  567. expect(this._bs.isValidField('iban')).toBeTruthy();
  568. });
  569. it('Liechtenstein', function() {
  570. this._$field.val('LI21088100002324013AA');
  571. this._bs.validate();
  572. expect(this._bs.isValidField('iban')).toBeTruthy();
  573. });
  574. it('Lithuania', function() {
  575. this._$field.val('LT121000011101001000');
  576. this._bs.validate();
  577. expect(this._bs.isValidField('iban')).toBeTruthy();
  578. });
  579. it('Luxembourg', function() {
  580. this._$field.val('LU280019400644750000');
  581. this._bs.validate();
  582. expect(this._bs.isValidField('iban')).toBeTruthy();
  583. });
  584. it('Macedonia', function() {
  585. this._$field.val('MK07300000000042425');
  586. this._bs.validate();
  587. expect(this._bs.isValidField('iban')).toBeTruthy();
  588. });
  589. it('Madagascar', function() {
  590. this._$field.val('MG4600005030010101914016056');
  591. this._bs.validate();
  592. expect(this._bs.isValidField('iban')).toBeTruthy();
  593. });
  594. it('Malta', function() {
  595. this._$field.val('MT84MALT011000012345MTLCAST001S');
  596. this._bs.validate();
  597. expect(this._bs.isValidField('iban')).toBeTruthy();
  598. });
  599. it('Mauritania', function() {
  600. this._$field.val('MR1300012000010000002037372');
  601. this._bs.validate();
  602. expect(this._bs.isValidField('iban')).toBeTruthy();
  603. });
  604. it('Mauritius', function() {
  605. this._$field.val('MU17BOMM0101101030300200000MUR');
  606. this._bs.validate();
  607. expect(this._bs.isValidField('iban')).toBeTruthy();
  608. });
  609. it('Mali', function() {
  610. this._$field.val('ML03D00890170001002120000447');
  611. this._bs.validate();
  612. expect(this._bs.isValidField('iban')).toBeTruthy();
  613. });
  614. it('Moldova', function() {
  615. this._$field.val('MD24AG000225100013104168');
  616. this._bs.validate();
  617. expect(this._bs.isValidField('iban')).toBeTruthy();
  618. });
  619. it('Monaco', function() {
  620. this._$field.val('MC5813488000010051108001292');
  621. this._bs.validate();
  622. expect(this._bs.isValidField('iban')).toBeTruthy();
  623. });
  624. it('Montenegro', function() {
  625. this._$field.val('ME25505000012345678951');
  626. this._bs.validate();
  627. expect(this._bs.isValidField('iban')).toBeTruthy();
  628. });
  629. it('Mozambique', function() {
  630. this._$field.val('MZ59000100000011834194157');
  631. this._bs.validate();
  632. expect(this._bs.isValidField('iban')).toBeTruthy();
  633. });
  634. it('Netherlands', function() {
  635. this._$field.val('NL91ABNA0417164300');
  636. this._bs.validate();
  637. expect(this._bs.isValidField('iban')).toBeTruthy();
  638. });
  639. it('Norway', function() {
  640. this._$field.val('NO9386011117947');
  641. this._bs.validate();
  642. expect(this._bs.isValidField('iban')).toBeTruthy();
  643. });
  644. it('Pakistan', function() {
  645. this._$field.val('PK24SCBL0000001171495101');
  646. this._bs.validate();
  647. expect(this._bs.isValidField('iban')).toBeTruthy();
  648. });
  649. it('Palestine', function() {
  650. this._$field.val('PS92PALS000000000400123456702');
  651. this._bs.validate();
  652. expect(this._bs.isValidField('iban')).toBeTruthy();
  653. });
  654. it('Poland', function() {
  655. this._$field.val('PL27114020040000300201355387');
  656. this._bs.validate();
  657. expect(this._bs.isValidField('iban')).toBeTruthy();
  658. });
  659. it('Portugal', function() {
  660. this._$field.val('PT50000201231234567890154');
  661. this._bs.validate();
  662. expect(this._bs.isValidField('iban')).toBeTruthy();
  663. });
  664. it('Qatar', function() {
  665. this._$field.val('QA58DOHB00001234567890ABCDEFG');
  666. this._bs.validate();
  667. expect(this._bs.isValidField('iban')).toBeTruthy();
  668. });
  669. it('Romania', function() {
  670. this._$field.val('RO49AAAA1B31007593840000');
  671. this._bs.validate();
  672. expect(this._bs.isValidField('iban')).toBeTruthy();
  673. });
  674. it('San Marino', function() {
  675. this._$field.val('SM86U0322509800000000270100');
  676. this._bs.validate();
  677. expect(this._bs.isValidField('iban')).toBeTruthy();
  678. });
  679. it('Saudi Arabia', function() {
  680. this._$field.val('SA0380000000608010167519');
  681. this._bs.validate();
  682. expect(this._bs.isValidField('iban')).toBeTruthy();
  683. });
  684. it('Senegal', function() {
  685. this._$field.val('SN12K00100152000025690007542');
  686. this._bs.validate();
  687. expect(this._bs.isValidField('iban')).toBeTruthy();
  688. });
  689. it('Serbia', function() {
  690. this._$field.val('RS35260005601001611379');
  691. this._bs.validate();
  692. expect(this._bs.isValidField('iban')).toBeTruthy();
  693. });
  694. it('Slovakia', function() {
  695. this._$field.val('SK3112000000198742637541');
  696. this._bs.validate();
  697. expect(this._bs.isValidField('iban')).toBeTruthy();
  698. });
  699. it('Slovenia', function() {
  700. this._$field.val('SI56191000000123438');
  701. this._bs.validate();
  702. expect(this._bs.isValidField('iban')).toBeTruthy();
  703. });
  704. it('Spain', function() {
  705. this._$field.val('ES9121000418450200051332');
  706. this._bs.validate();
  707. expect(this._bs.isValidField('iban')).toBeTruthy();
  708. });
  709. it('Sweden', function() {
  710. this._$field.val('SE3550000000054910000003');
  711. this._bs.validate();
  712. expect(this._bs.isValidField('iban')).toBeTruthy();
  713. });
  714. it('Switzerland', function() {
  715. this._$field.val('CH9300762011623852957');
  716. this._bs.validate();
  717. expect(this._bs.isValidField('iban')).toBeTruthy();
  718. });
  719. it('Tunisia', function() {
  720. this._$field.val('TN5914207207100707129648');
  721. this._bs.validate();
  722. expect(this._bs.isValidField('iban')).toBeTruthy();
  723. });
  724. it('Turkey', function() {
  725. this._$field.val('TR330006100519786457841326');
  726. this._bs.validate();
  727. expect(this._bs.isValidField('iban')).toBeTruthy();
  728. });
  729. it('United Arab Emirates', function() {
  730. this._$field.val('AE260211000000230064016');
  731. this._bs.validate();
  732. expect(this._bs.isValidField('iban')).toBeTruthy();
  733. });
  734. it('United Kingdom', function() {
  735. this._$field.val('GB29NWBK60161331926819');
  736. this._bs.validate();
  737. expect(this._bs.isValidField('iban')).toBeTruthy();
  738. });
  739. it('Virgin Islands, British', function() {
  740. this._$field.val('VG96VPVG0000012345678901');
  741. this._bs.validate();
  742. expect(this._bs.isValidField('iban')).toBeTruthy();
  743. });
  744. it('invalid checksum', function() {
  745. this._$field.val('TR330006100519786457841325');
  746. this._bs.validate();
  747. expect(this._bs.isValidField('iban')).toEqual(false);
  748. });
  749. });
  750. describe('isbn', function() {
  751. // Override the default options
  752. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  753. feedbackIcons: {
  754. valid: 'glyphicon glyphicon-ok',
  755. invalid: 'glyphicon glyphicon-remove',
  756. validating: 'glyphicon glyphicon-refresh'
  757. }
  758. });
  759. beforeEach(function() {
  760. var html = [
  761. '<div class="container">',
  762. '<form class="form-horizontal" id="form">',
  763. '<div class="form-group">',
  764. '<input type="text" name="isbn" data-bv-isbn />',
  765. '</div>',
  766. '</form>',
  767. '</div>'
  768. ].join('\n');
  769. $(html).appendTo('body');
  770. $('#form').bootstrapValidator();
  771. this._bs = $('#form').data('bootstrapValidator');
  772. this._$field = this._bs.getFieldElements('isbn');
  773. });
  774. afterEach(function() {
  775. $('#form').bootstrapValidator('destroy').remove();
  776. });
  777. it('isbn10 hyphen', function() {
  778. var samples = ['99921-58-10-7', '9971-5-0210-0', '960-425-059-0', '80-902734-1-6'];
  779. for (var i in samples) {
  780. this._$field.val(samples[i]);
  781. this._bs.validate();
  782. expect(this._bs.isValidField('isbn')).toBeTruthy();
  783. }
  784. });
  785. it('isbn10 space', function() {
  786. var samples = ['85 359 0277 5', '1 84356 028 3', '0 684 84328 5', '0 85131 041 9', '0 943396 04 2'];
  787. for (var i in samples) {
  788. this._$field.val(samples[i]);
  789. this._bs.validate();
  790. expect(this._bs.isValidField('isbn')).toBeTruthy();
  791. }
  792. });
  793. it('isbn10 hyphen with X', function() {
  794. var samples = ['0-8044-2957-X', '0-9752298-0-X'];
  795. for (var i in samples) {
  796. this._$field.val(samples[i]);
  797. this._bs.validate();
  798. expect(this._bs.isValidField('isbn')).toBeTruthy();
  799. }
  800. });
  801. it('isbn10 invalid check digit', function() {
  802. this._$field.val('99921-58-10-6');
  803. this._bs.validate();
  804. expect(this._bs.isValidField('isbn')).toEqual(false);
  805. });
  806. it('isbn13', function() {
  807. this._$field.val('978-0-306-40615-7');
  808. this._bs.validate();
  809. expect(this._bs.isValidField('isbn')).toBeTruthy();
  810. });
  811. it('isbn13 invalid check digit', function() {
  812. this._$field.val('978-0-306-40615-6');
  813. this._bs.validate();
  814. expect(this._bs.isValidField('isbn')).toEqual(false);
  815. });
  816. });
  817. describe('isin', function() {
  818. // Override the default options
  819. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  820. feedbackIcons: {
  821. valid: 'glyphicon glyphicon-ok',
  822. invalid: 'glyphicon glyphicon-remove',
  823. validating: 'glyphicon glyphicon-refresh'
  824. }
  825. });
  826. beforeEach(function() {
  827. var html = [
  828. '<div class="container">',
  829. '<form class="form-horizontal" id="form">',
  830. '<div class="form-group">',
  831. '<input type="text" name="isin" data-bv-isin />',
  832. '</div>',
  833. '</form>',
  834. '</div>'
  835. ].join('\n');
  836. $(html).appendTo('body');
  837. $('#form').bootstrapValidator();
  838. this._bs = $('#form').data('bootstrapValidator');
  839. this._$field = this._bs.getFieldElements('isin');
  840. });
  841. afterEach(function() {
  842. $('#form').bootstrapValidator('destroy').remove();
  843. });
  844. it('valid', function() {
  845. var samples = ['US0378331005', 'AU0000XVGZA3', 'GB0002634946'];
  846. for (var i in samples) {
  847. this._$field.val(samples[i]);
  848. this._bs.validate();
  849. expect(this._bs.isValidField('isin')).toBeTruthy();
  850. }
  851. });
  852. it('invalid country code', function() {
  853. this._$field.val('AA0000XVGZA3');
  854. this._bs.validate();
  855. expect(this._bs.isValidField('isin')).toEqual(false);
  856. });
  857. it('contains only digits and alphabet', function() {
  858. this._$field.val('US12345ABC@#$');
  859. this._bs.validate();
  860. expect(this._bs.isValidField('isin')).toEqual(false);
  861. });
  862. it('invalid length', function() {
  863. this._$field.val('US1234567');
  864. this._bs.validate();
  865. expect(this._bs.isValidField('isin')).toEqual(false);
  866. });
  867. it('invalid check digit', function() {
  868. this._$field.val('US0378331004');
  869. this._bs.validate();
  870. expect(this._bs.isValidField('isin')).toEqual(false);
  871. });
  872. });
  873. describe('ismn', function() {
  874. // Override the default options
  875. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  876. feedbackIcons: {
  877. valid: 'glyphicon glyphicon-ok',
  878. invalid: 'glyphicon glyphicon-remove',
  879. validating: 'glyphicon glyphicon-refresh'
  880. }
  881. });
  882. beforeEach(function() {
  883. var html = [
  884. '<div class="container">',
  885. '<form class="form-horizontal" id="form">',
  886. '<div class="form-group">',
  887. '<input type="text" name="ismn" data-bv-ismn />',
  888. '</div>',
  889. '</form>',
  890. '</div>'
  891. ].join('\n');
  892. $(html).appendTo('body');
  893. $('#form').bootstrapValidator();
  894. this._bs = $('#form').data('bootstrapValidator');
  895. this._$field = this._bs.getFieldElements('ismn');
  896. });
  897. afterEach(function() {
  898. $('#form').bootstrapValidator('destroy').remove();
  899. });
  900. it('valid start with M', function() {
  901. this._$field.val('M230671187');
  902. this._bs.validate();
  903. expect(this._bs.isValidField('ismn')).toBeTruthy();
  904. });
  905. it('valid start with 979', function() {
  906. this._$field.val('9790060115615');
  907. this._bs.validate();
  908. expect(this._bs.isValidField('ismn')).toBeTruthy();
  909. });
  910. it('valid contains spaces', function() {
  911. this._$field.val('979 0 3452 4680 5');
  912. this._bs.validate();
  913. expect(this._bs.isValidField('ismn')).toBeTruthy();
  914. });
  915. it('valid contains dashes', function() {
  916. this._$field.val('979-0-0601-1561-5');
  917. this._bs.validate();
  918. expect(this._bs.isValidField('ismn')).toBeTruthy();
  919. });
  920. it('invalid format', function() {
  921. this._$field.val('N123456789');
  922. this._bs.validate();
  923. expect(this._bs.isValidField('ismn')).toEqual(false);
  924. });
  925. it('invalid check digit', function() {
  926. this._$field.val('9790060115614');
  927. this._bs.validate();
  928. expect(this._bs.isValidField('ismn')).toEqual(false);
  929. });
  930. });
  931. describe('issn', function() {
  932. // Override the default options
  933. $.extend($.fn.bootstrapValidator.DEFAULT_OPTIONS, {
  934. feedbackIcons: {
  935. valid: 'glyphicon glyphicon-ok',
  936. invalid: 'glyphicon glyphicon-remove',
  937. validating: 'glyphicon glyphicon-refresh'
  938. }
  939. });
  940. beforeEach(function() {
  941. var html = [
  942. '<div class="container">',
  943. '<form class="form-horizontal" id="form">',
  944. '<div class="form-group">',
  945. '<input type="text" name="issn" data-bv-issn />',
  946. '</div>',
  947. '</form>',
  948. '</div>'
  949. ].join('\n');
  950. $(html).appendTo('body');
  951. $('#form').bootstrapValidator();
  952. this._bs = $('#form').data('bootstrapValidator');
  953. this._$field = this._bs.getFieldElements('issn');
  954. });
  955. afterEach(function() {
  956. $('#form').bootstrapValidator('destroy').remove();
  957. });
  958. it('valid', function() {
  959. var samples = ['0378-5955', '0024-9319', '0032-1478'];
  960. for (var i in samples) {
  961. this._$field.val(samples[i]);
  962. this._bs.validate();
  963. expect(this._bs.isValidField('issn')).toBeTruthy();
  964. }
  965. });
  966. it('not contains hyphen', function() {
  967. this._$field.val('03785955');
  968. this._bs.validate();
  969. expect(this._bs.isValidField('issn')).toEqual(false);
  970. });
  971. it('contains only digits, X', function() {
  972. this._$field.val('1234-566A');
  973. this._bs.validate();
  974. expect(this._bs.isValidField('issn')).toEqual(false);
  975. });
  976. it('invalid check sum', function() {
  977. this._$field.val('0032-147X');
  978. this._bs.validate();
  979. expect(this._bs.isValidField('issn')).toEqual(false);
  980. });
  981. });