tests_dynamic.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. import { keys } from "../lib/keycode";
  2. export default function (qunit, Inputmask) {
  3. const $ = Inputmask.dependencyLib;
  4. qunit.module("Dynamic Masks");
  5. qunit.test('inputmask("9-a{3}9{3}" - simple dynamic mask', function (assert) {
  6. const $fixture = $("#qunit-fixture");
  7. $fixture.append('<input type="text" id="testmask" />');
  8. const testmask = document.getElementById("testmask");
  9. Inputmask("9-a{3}9{3}").mask(testmask);
  10. testmask.focus();
  11. $("#testmask").Type("1abc123");
  12. assert.equal(testmask.value, "1-abc123", "Result " + testmask.value);
  13. });
  14. qunit.test(
  15. 'inputmask("9-a{1,3}9{1,3}" - simple dynamic mask',
  16. function (assert) {
  17. const $fixture = $("#qunit-fixture");
  18. $fixture.append('<input type="text" id="testmask" />');
  19. const testmask = document.getElementById("testmask");
  20. Inputmask("9-a{1,3}9{1,3}").mask(testmask);
  21. testmask.focus();
  22. $("#testmask").Type("1a1");
  23. assert.equal(testmask.value, "1-a1", "Result " + testmask.value);
  24. }
  25. );
  26. qunit.test(
  27. 'inputmask("9-a{1,3}9{1,3}" - simple dynamic mask - greedy false',
  28. function (assert) {
  29. const $fixture = $("#qunit-fixture");
  30. $fixture.append('<input type="text" id="testmask" />');
  31. const testmask = document.getElementById("testmask");
  32. Inputmask("9-a{1,3}9{1,3}", {
  33. greedy: false
  34. }).mask(testmask);
  35. testmask.focus();
  36. $("#testmask").Type("1a1");
  37. assert.equal(testmask.value, "1-a1", "Result " + testmask.value);
  38. }
  39. );
  40. qunit.test(
  41. 'inputmask("9-a{1,3}/9{2,3}" - simple dynamic mask - greedy true',
  42. function (assert) {
  43. const $fixture = $("#qunit-fixture");
  44. $fixture.append('<input type="text" id="testmask" />');
  45. const testmask = document.getElementById("testmask");
  46. Inputmask("9-a{1,3}/9{2,3}", {
  47. greedy: true
  48. }).mask(testmask);
  49. testmask.focus();
  50. $("#testmask").Type("1a/123");
  51. assert.equal(testmask.value, "1-a/123", "Result " + testmask.value);
  52. }
  53. );
  54. qunit.test("email mask greedy false", function (assert) {
  55. const $fixture = $("#qunit-fixture");
  56. $fixture.append('<input type="text" id="testmask" />');
  57. const testmask = document.getElementById("testmask");
  58. Inputmask("email", {
  59. greedy: false
  60. }).mask(testmask);
  61. testmask.focus();
  62. $("#testmask").Type("some.body@mail.com");
  63. testmask.blur();
  64. assert.equal(
  65. testmask.value,
  66. "some.body@mail.com",
  67. "Result " + testmask.value
  68. );
  69. });
  70. qunit.test("email mask greedy true", function (assert) {
  71. const done = assert.async(),
  72. $fixture = $("#qunit-fixture");
  73. $fixture.append('<input type="text" id="testmask" />');
  74. const testmask = document.getElementById("testmask");
  75. Inputmask("email", {
  76. greedy: true
  77. }).mask(testmask);
  78. testmask.focus();
  79. setTimeout(function () {
  80. $("#testmask").Type("some.body@mail.com");
  81. testmask.blur();
  82. setTimeout(function () {
  83. assert.equal(
  84. testmask.value,
  85. "some.body@mail.com",
  86. "Result " + testmask.value
  87. );
  88. done();
  89. }, 0);
  90. }, 0);
  91. });
  92. qunit.test("email mask - partial input", function (assert) {
  93. const $fixture = $("#qunit-fixture");
  94. $fixture.append('<input type="text" id="testmask" />');
  95. const testmask = document.getElementById("testmask");
  96. Inputmask("email").mask(testmask);
  97. testmask.focus();
  98. $("#testmask").Type("some.");
  99. testmask.blur();
  100. assert.equal(testmask.value, "some.@_._", "Result " + testmask.value);
  101. });
  102. qunit.test("email mask - partial input 2", function (assert) {
  103. const $fixture = $("#qunit-fixture");
  104. $fixture.append('<input type="text" id="testmask" />');
  105. const testmask = document.getElementById("testmask");
  106. Inputmask("email").mask(testmask);
  107. testmask.focus();
  108. $("#testmask").Type("some@mail.com");
  109. $.caret(testmask, 4);
  110. $("#testmask").Type(".body");
  111. assert.equal(
  112. testmask.value,
  113. "some.body@mail.com",
  114. "Result " + testmask.value
  115. );
  116. });
  117. qunit.test("email mask - babu@us.lufthansa.com - babupca", function (assert) {
  118. const $fixture = $("#qunit-fixture");
  119. $fixture.append('<input type="text" id="testmask" />');
  120. const testmask = document.getElementById("testmask");
  121. Inputmask("email").mask(testmask);
  122. testmask.focus();
  123. $("#testmask").Type("babu@us.lufthansa.com");
  124. assert.equal(
  125. testmask.value,
  126. "babu@us.lufthansa.com",
  127. "Result " + testmask.value
  128. );
  129. });
  130. qunit.test(
  131. "email mask - email@subdomain.domain.com - babupca",
  132. function (assert) {
  133. const $fixture = $("#qunit-fixture");
  134. $fixture.append('<input type="text" id="testmask" />');
  135. const testmask = document.getElementById("testmask");
  136. Inputmask("email").mask(testmask);
  137. testmask.focus();
  138. $("#testmask").Type("email@subdomain.domain.com");
  139. assert.equal(
  140. testmask.value,
  141. "email@subdomain.domain.com",
  142. "Result " + testmask.value
  143. );
  144. }
  145. );
  146. qunit.test(
  147. "email mask - paste test.test@test.com - Kurumas",
  148. function (assert) {
  149. const done = assert.async(),
  150. $fixture = $("#qunit-fixture");
  151. $fixture.append('<input type="text" id="testmask" />');
  152. const testmask = document.getElementById("testmask");
  153. Inputmask("email").mask(testmask);
  154. testmask.focus();
  155. $("#testmask").paste("test.test@test.com");
  156. setTimeout(function () {
  157. assert.equal(
  158. testmask.value,
  159. "test.test@test.com",
  160. "Result " + testmask.value
  161. );
  162. done();
  163. }, 0);
  164. }
  165. );
  166. qunit.test("quantifier mask greedy false - FairSite2C", function (assert) {
  167. const $fixture = $("#qunit-fixture");
  168. $fixture.append('<input type="text" id="testmask" />');
  169. const testmask = document.getElementById("testmask");
  170. Inputmask("9{0,4}", {
  171. greedy: false
  172. }).mask(testmask);
  173. testmask.focus();
  174. $("#testmask").Type("123");
  175. assert.equal(testmask.value, "123", "Result " + testmask.value);
  176. });
  177. qunit.test("quantifier mask greedy true - FairSite2C", function (assert) {
  178. const $fixture = $("#qunit-fixture");
  179. $fixture.append('<input type="text" id="testmask" />');
  180. const testmask = document.getElementById("testmask");
  181. Inputmask("9{0,4}", {
  182. greedy: true
  183. }).mask(testmask);
  184. testmask.focus();
  185. $("#testmask").Type("123");
  186. assert.equal(testmask.value, "123", "Result " + testmask.value);
  187. });
  188. qunit.test("email mask - clearIncomplete - hiddenman", function (assert) {
  189. const done = assert.async(),
  190. $fixture = $("#qunit-fixture");
  191. $fixture.append('<input type="text" id="testmask" />');
  192. const testmask = document.getElementById("testmask");
  193. Inputmask("email", {
  194. clearIncomplete: true
  195. }).mask(testmask);
  196. testmask.focus();
  197. setTimeout(function () {
  198. $("#testmask").Type("akornilov");
  199. testmask.blur();
  200. setTimeout(function () {
  201. assert.equal(
  202. document.getElementById("testmask").inputmask._valueGet(),
  203. "",
  204. "Result " + document.getElementById("testmask").inputmask._valueGet()
  205. );
  206. done();
  207. }, 0);
  208. }, 0);
  209. });
  210. qunit.test("email mask - clearIncomplete - hiddenman", function (assert) {
  211. const done = assert.async(),
  212. $fixture = $("#qunit-fixture");
  213. $fixture.append('<input type="text" id="testmask" />');
  214. const testmask = document.getElementById("testmask");
  215. Inputmask("email", {
  216. clearIncomplete: true
  217. }).mask(testmask);
  218. testmask.focus();
  219. setTimeout(function () {
  220. $("#testmask").Type("akornilov@");
  221. testmask.blur();
  222. setTimeout(function () {
  223. assert.equal(
  224. document.getElementById("testmask").inputmask._valueGet(),
  225. "",
  226. "Result " + document.getElementById("testmask").inputmask._valueGet()
  227. );
  228. done();
  229. }, 0);
  230. }, 0);
  231. });
  232. qunit.test("email mask - clearIncomplete - hiddenman", function (assert) {
  233. const done = assert.async(),
  234. $fixture = $("#qunit-fixture");
  235. $fixture.append('<input type="text" id="testmask" />');
  236. const testmask = document.getElementById("testmask");
  237. Inputmask("email", {
  238. clearIncomplete: true
  239. }).mask(testmask);
  240. testmask.focus();
  241. $("#testmask").Type("akornilov@gmail.com");
  242. testmask.blur();
  243. setTimeout(function () {
  244. assert.equal(
  245. document.getElementById("testmask").inputmask._valueGet(),
  246. "akornilov@gmail.com",
  247. "Result " + document.getElementById("testmask").inputmask._valueGet()
  248. );
  249. done();
  250. }, 0);
  251. });
  252. qunit.test("mask: '\\\\a{*}', repeat: 5 - voidmain02", function (assert) {
  253. const $fixture = $("#qunit-fixture");
  254. $fixture.append('<input type="text" id="testmask" />');
  255. const testmask = document.getElementById("testmask");
  256. Inputmask({
  257. mask: "\\\\a{*}",
  258. repeat: 5
  259. }).mask(testmask);
  260. testmask.focus();
  261. $("#testmask").Type("abcd abcd abcd abcd abcd");
  262. assert.equal(
  263. document.getElementById("testmask").inputmask._valueGet(),
  264. "\\abcd\\abcd\\abcd\\abcd\\abcd",
  265. "Result " + document.getElementById("testmask").inputmask._valueGet()
  266. );
  267. });
  268. qunit.test(
  269. "[a{1,3}-]9999 - type abc1234 => delete c - ivodopyanov",
  270. function (assert) {
  271. const $fixture = $("#qunit-fixture");
  272. $fixture.append('<input type="text" id="testmask" />');
  273. const testmask = document.getElementById("testmask");
  274. Inputmask("[a{1,3}-]9999").mask(testmask);
  275. $("#testmask").Type("abc1234");
  276. $.caret(testmask, 2);
  277. $("#testmask").SendKey(keys.Delete);
  278. assert.equal(
  279. document.getElementById("testmask").inputmask._valueGet(),
  280. "ab-1234",
  281. "Result " + document.getElementById("testmask").inputmask._valueGet()
  282. );
  283. }
  284. );
  285. qunit.test(
  286. "email mask - mouseclick to domain part - hiddenman",
  287. function (assert) {
  288. const done = assert.async(),
  289. $fixture = $("#qunit-fixture");
  290. $fixture.append('<input type="text" id="testmask" />');
  291. const testmask = document.getElementById("testmask");
  292. Inputmask("email").mask(testmask);
  293. testmask.focus();
  294. $("#testmask").Type("akornilov");
  295. // fake click in position
  296. $.caret(testmask, 10);
  297. $("#testmask").trigger("click");
  298. $("#testmask").Type("gmail.com");
  299. setTimeout(function () {
  300. assert.equal(
  301. document.getElementById("testmask").inputmask._valueGet(),
  302. "akornilov@gmail.com",
  303. "Result " + document.getElementById("testmask").inputmask._valueGet()
  304. );
  305. done();
  306. }, 0);
  307. }
  308. );
  309. qunit.test("I{1,3}-ZZ - rgafaric", function (assert) {
  310. const done = assert.async(),
  311. $fixture = $("#qunit-fixture");
  312. $fixture.append('<input type="text" id="testmask" value="VAA" />');
  313. const testmask = document.getElementById("testmask");
  314. Inputmask({
  315. mask: "I{1,3}-ZZ",
  316. definitions: {
  317. Z: {
  318. validator: "[A-Za-z]",
  319. cardinality: 1
  320. },
  321. I: {
  322. validator: "[ivxlcdmIVXLCDM]",
  323. cardinality: 1
  324. }
  325. }
  326. }).mask(testmask);
  327. testmask.blur();
  328. setTimeout(function () {
  329. assert.equal(
  330. document.getElementById("testmask").inputmask._valueGet(),
  331. "V-AA",
  332. "Result " + document.getElementById("testmask").inputmask._valueGet()
  333. );
  334. done();
  335. }, 0);
  336. });
  337. qunit.test(
  338. "email mask - some.body@mail.com - delete before @",
  339. function (assert) {
  340. const $fixture = $("#qunit-fixture");
  341. $fixture.append('<input type="text" id="testmask" />');
  342. const testmask = document.getElementById("testmask");
  343. Inputmask("email").mask(testmask);
  344. testmask.focus();
  345. $("#testmask").Type("some.body@mail.com");
  346. $.caret(testmask, 9);
  347. $("#testmask").SendKey(keys.Delete);
  348. assert.equal(
  349. $.caret(testmask).begin,
  350. "some.body@".length,
  351. "Result " + $.caret(testmask).begin
  352. );
  353. }
  354. );
  355. qunit.test("email mask -123@mail.com - 123 => info", function (assert) {
  356. const $fixture = $("#qunit-fixture");
  357. $fixture.append('<input type="text" id="testmask" />');
  358. const testmask = document.getElementById("testmask");
  359. Inputmask("email").mask(testmask);
  360. testmask.focus();
  361. $("#testmask").Type("123@mail.com");
  362. $.caret(testmask, 0, 3);
  363. $("#testmask").Type("info");
  364. assert.equal(testmask.value, "info@mail.com", "Result " + testmask.value);
  365. });
  366. qunit.test(
  367. "(aa)|(a.a.)|(aaa)|(aa.a.)|(a.aa.) - incomplete - danielpiterak",
  368. function (assert) {
  369. const $fixture = $("#qunit-fixture");
  370. $fixture.append('<input type="text" id="testmask" />');
  371. const testmask = document.getElementById("testmask");
  372. Inputmask("(aa)|(a.a.)|(aaa)|(aa.a.)|(a.aa.)", {
  373. clearMaskOnLostFocus: true,
  374. showMaskOnHover: false,
  375. placeholder: " ",
  376. casing: "upper",
  377. keepStatic: false
  378. }).mask(testmask);
  379. testmask.focus();
  380. $("#testmask").Type("p.p");
  381. testmask.blur();
  382. assert.equal(testmask.value, "P.P.", "Result " + testmask.value);
  383. }
  384. );
  385. qunit.test(
  386. "(aa)|(a.a.)|(aaa)|(aa.a.)|(a.aa.) - complete - danielpiterak",
  387. function (assert) {
  388. const $fixture = $("#qunit-fixture");
  389. $fixture.append('<input type="text" id="testmask" />');
  390. const testmask = document.getElementById("testmask");
  391. Inputmask("(aa)|(a.a.)|(aaa)|(aa.a.)|(a.aa.)", {
  392. clearMaskOnLostFocus: true,
  393. showMaskOnHover: false,
  394. placeholder: " ",
  395. casing: "upper"
  396. }).mask(testmask);
  397. testmask.focus();
  398. $("#testmask").Type("p.p.");
  399. testmask.blur();
  400. assert.equal(testmask.value, "P.P.", "Result " + testmask.value);
  401. }
  402. );
  403. qunit.test("(99){+|1}a - dynamic jit offset", function (assert) {
  404. const $fixture = $("#qunit-fixture");
  405. $fixture.append('<input type="text" id="testmask" />');
  406. const testmask = document.getElementById("testmask");
  407. Inputmask("(99){+|1}a").mask(testmask);
  408. testmask.focus();
  409. $("#testmask").trigger("click");
  410. $("#testmask").Type("1a");
  411. assert.equal(testmask.value, "1a", "Result " + testmask.value);
  412. });
  413. qunit.test(
  414. "(.999){+|1},00 - Loop trigger in revalidateMask",
  415. function (assert) {
  416. const $fixture = $("#qunit-fixture");
  417. $fixture.append('<input type="text" id="testmask" />');
  418. const testmask = document.getElementById("testmask");
  419. Inputmask("(.999){+|1},00", {
  420. radixPoint: ",",
  421. numericInput: true,
  422. placeholder: "0",
  423. definitions: {
  424. 0: {
  425. validator: "[0-9\uFF11-\uFF19]"
  426. }
  427. }
  428. }).mask(testmask);
  429. testmask.focus();
  430. $("#testmask").trigger("click");
  431. $("#testmask").Type("123333333333333333333333");
  432. assert.equal(testmask.value, "0,12", "Result " + testmask.value);
  433. }
  434. );
  435. qunit.test("a9{+} - Loop trigger in revalidateMask", function (assert) {
  436. const $fixture = $("#qunit-fixture");
  437. $fixture.append('<input type="text" id="testmask" />');
  438. const testmask = document.getElementById("testmask");
  439. Inputmask("a9{+}").mask(testmask);
  440. testmask.focus();
  441. $("#testmask").trigger("click");
  442. $("#testmask").Type("a");
  443. $.caret(testmask, 0);
  444. $("#testmask").Type("a");
  445. assert.equal(testmask.value, "a_", "Result " + testmask.value);
  446. });
  447. qunit.test("Loop trigger in gettests", function (assert) {
  448. const $fixture = $("#qunit-fixture");
  449. $fixture.append('<input type="text" id="testmask" />');
  450. const testmask = document.getElementById("testmask");
  451. Inputmask({
  452. mask: "(99) 99999-9999[ ]",
  453. repeat: "*"
  454. }).mask(testmask);
  455. testmask.focus();
  456. $("#testmask").trigger("click");
  457. $("#testmask").Type("12123451234");
  458. assert.equal(testmask.value, "(12) 12345-1234", "Result " + testmask.value);
  459. });
  460. qunit.test(
  461. "Char before quantifier gets duplicated in tests #2152",
  462. function (assert) {
  463. const $fixture = $("#qunit-fixture");
  464. $fixture.append('<input type="text" id="testmask" />');
  465. const testmask = document.getElementById("testmask");
  466. Inputmask("9{*}.aaa", {
  467. numericInput: false
  468. }).mask(testmask);
  469. testmask.focus();
  470. $("#testmask").trigger("click");
  471. $("#testmask").Type("123abc");
  472. $.caret(testmask, 1);
  473. $("#testmask").Type(".");
  474. assert.equal(testmask.value, "123.abc", "Result " + testmask.value);
  475. }
  476. );
  477. qunit.test("email mask set email", function (assert) {
  478. const $fixture = $("#qunit-fixture");
  479. $fixture.append('<input type="text" id="testmask" />');
  480. const testmask = document.getElementById("testmask");
  481. Inputmask("email").mask(testmask);
  482. testmask.focus();
  483. $("#testmask").val("some.body@mymail.com");
  484. $.caret(testmask, "some.body@m".length);
  485. $("#testmask").SendKey(keys.Delete);
  486. $("#testmask").SendKey(keys.Delete);
  487. assert.equal(
  488. testmask.value,
  489. "some.body@mail.com",
  490. "Result " + testmask.value
  491. );
  492. });
  493. }