validation.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. (function (Misago) {
  2. 'use strict';
  3. var service = getMisagoService('validate');
  4. QUnit.module("Validate");
  5. QUnit.test("service factory", function(assert) {
  6. var validate = service.factory();
  7. assert.ok(validate, "service factory has returned service instance.");
  8. });
  9. QUnit.test("validate form", function(assert) {
  10. var validate = service.factory();
  11. var form = {
  12. username: m.prop(''),
  13. password: m.prop('ok!'),
  14. optional: m.prop(''),
  15. validation: {
  16. username: [],
  17. password: []
  18. }
  19. };
  20. assert.ok(!validate(form), "validate() returned false for invalid form.");
  21. assert.deepEqual(
  22. form.errors,
  23. {
  24. username: [
  25. "This field is required."
  26. ],
  27. password: true
  28. },
  29. "validate() set form.errors correctly.");
  30. form.username('fullname');
  31. assert.ok(validate(form), "validate() returned true for valid form.");
  32. assert.deepEqual(
  33. form.errors,
  34. {
  35. username: true,
  36. password: true
  37. },
  38. "valid form validation didn't return errors");
  39. });
  40. QUnit.test("validate field", function(assert) {
  41. var validate = service.factory();
  42. var form = {
  43. username: m.prop(''),
  44. validation: {
  45. username: []
  46. }
  47. };
  48. var validator = validate(form, 'username');
  49. validator('');
  50. assert.deepEqual(
  51. form.errors,
  52. {
  53. username: [
  54. "This field is required."
  55. ]
  56. },
  57. "field validator has set an error on form.");
  58. validator('fullname');
  59. assert.deepEqual(
  60. form.errors,
  61. {
  62. username: true
  63. },
  64. "field validator marked input as passing.");
  65. });
  66. QUnit.test("required validator", function(assert) {
  67. assert.equal(Misago.validators.required()('yup'), undefined,
  68. "non-empty string passed validation.");
  69. assert.equal(
  70. Misago.validators.required()(' '), gettext("This field is required."),
  71. "empty string failed validation.");
  72. });
  73. QUnit.test("email validator", function(assert) {
  74. assert.equal(Misago.validators.email()('simple@email.com'), undefined,
  75. "simple e-mail passed validation.");
  76. assert.equal(Misago.validators.email()('si.mp.le@ema.il.com'), undefined,
  77. "dotted e-mail passed validation.");
  78. assert.equal(Misago.validators.email()('si-mp-le@ema-il.com'), undefined,
  79. "hyphenated e-mail passed validation.");
  80. assert.equal(Misago.validators.email()('si_mp_le@ema_il.com'), undefined,
  81. "underscored e-mail passed validation.");
  82. assert.equal(Misago.validators.email()('si+mp+le@email.com'), undefined,
  83. "plused e-mail passed validation.");
  84. assert.equal(
  85. Misago.validators.email('Nope!')('hh'), 'Nope!',
  86. "non-email errored with message providen.");
  87. });
  88. QUnit.test("minLength validator", function(assert) {
  89. assert.equal(Misago.validators.minLength(5)('yusss'), undefined,
  90. "string of required length passed validation.");
  91. assert.equal(
  92. Misago.validators.minLength(5)('nope'),
  93. "Ensure this value has at least 5 characters (it has 4).",
  94. "too short string failed validation.");
  95. });
  96. QUnit.test("maxLength validator", function(assert) {
  97. assert.equal(Misago.validators.maxLength(5)('yusss'), undefined,
  98. "string of required length passed validation.");
  99. assert.equal(
  100. Misago.validators.maxLength(5)('too long!'),
  101. "Ensure this value has at most 5 characters (it has 9).",
  102. "too long string failed validation.");
  103. });
  104. QUnit.test("usernameMinLength validator", function(assert) {
  105. var settings = {
  106. username_length_min: 4
  107. };
  108. assert.equal(
  109. Misago.validators.usernameMinLength(settings)('yusss'), undefined,
  110. "username of required length passed validation.");
  111. assert.equal(
  112. Misago.validators.usernameMinLength(settings)('no'),
  113. "Username must be at least 4 characters long.",
  114. "too short username failed validation.");
  115. });
  116. QUnit.test("usernameMaxLength validator", function(assert) {
  117. var settings = {
  118. username_length_max: 4
  119. };
  120. assert.equal(
  121. Misago.validators.usernameMaxLength(settings)('yuss'), undefined,
  122. "username of required length passed validation.");
  123. assert.equal(
  124. Misago.validators.usernameMaxLength(settings)('too long!'),
  125. "Username cannot be longer than 4 characters.",
  126. "too long username failed validation.");
  127. });
  128. QUnit.test("username validator", function(assert) {
  129. assert.equal(Misago.validators.usernameContent()('v4lid'), undefined,
  130. "valid username passed validation.");
  131. assert.equal(
  132. Misago.validators.usernameContent()('++++'),
  133. "Username can only contain latin alphabet letters and digits.",
  134. "invalid username failed validation.");
  135. });
  136. QUnit.test("passwordMinLength validator", function(assert) {
  137. var settings = {
  138. password_length_min: 4
  139. };
  140. assert.equal(
  141. Misago.validators.passwordMinLength(settings)('yusss'), undefined,
  142. "password of required length passed validation.");
  143. assert.equal(
  144. Misago.validators.passwordMinLength(settings)('no'),
  145. "Valid password must be at least 4 characters long.",
  146. "too short password failed validation.");
  147. });
  148. }(Misago.prototype));