form-validation.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. test( "form validation check", function() {
  2. $('#forms').append('<hr><h1>form params check</h1><form id="form1"></form>')
  3. var el = $('#form1')
  4. var defaults = {}
  5. var form = new App.ControllerForm({
  6. el: el,
  7. model: {
  8. configure_attributes: [
  9. { name: 'input1', display: 'Input1', tag: 'input', type: 'text', limit: 100, null: false },
  10. { name: 'password1', display: 'Password1', tag: 'input', type: 'password', limit: 100, null: false },
  11. { name: 'textarea1', display: 'Textarea1', tag: 'textarea', rows: 6, limit: 100, null: false, upload: true },
  12. { name: 'select1', display: 'Select1', tag: 'select', null: false, nulloption: true, options: { true: 'internal', false: 'public' } },
  13. { name: 'selectmulti1', display: 'SelectMulti1', tag: 'select', null: false, nulloption: true, multiple: true, options: { true: 'internal', false: 'public' } },
  14. { name: 'autocompletion1', display: 'AutoCompletion1', tag: 'autocompletion', null: false, options: { true: 'internal', false: 'public' }, source: [ { label: "Choice1", value: "value1", id: "id1" }, { label: "Choice2", value: "value2", id: "id2" }, ], minLength: 1 },
  15. { name: 'richtext1', display: 'Richtext1', tag: 'richtext', maxlength: 100, null: false, type: 'richtext', multiline: true, upload: true, default: defaults['richtext1'] },
  16. { name: 'datetime1', display: 'Datetime1', tag: 'datetime', null: false, default: defaults['datetime1'] },
  17. { name: 'active1', display: 'Active1', tag: 'boolean', type: 'boolean', default: defaults['active1'], null: false },
  18. ],
  19. },
  20. params: defaults,
  21. });
  22. equal( el.find('[name="input1"]').val(), '', 'check input1 value')
  23. equal( el.find('[name="input1"]').prop('required'), true, 'check input1 required')
  24. // equal( el.find('[name="input1"]').is(":focus"), true, 'check input1 focus')
  25. equal( el.find('[name="password1"]').val(), '', 'check password1 value')
  26. equal( el.find('[name="password1_confirm"]').val(), '', 'check password1 value')
  27. equal( el.find('[name="password1"]').prop('required'), true, 'check password1 required')
  28. equal( el.find('[name="textarea1"]').val(), '', 'check textarea1 value')
  29. equal( el.find('[name="textarea1"]').prop('required'), true, 'check textarea1 required')
  30. equal( el.find('[name="select1"]').val(), '', 'check select1 value')
  31. equal( el.find('[name="select1"]').prop('required'), true, 'check select1 required')
  32. equal( el.find('[name="selectmulti1"]').val(), null, 'check selectmulti1 value')
  33. equal( el.find('[name="selectmulti1"]').prop('required'), true, 'check selectmulti1 required')
  34. equal( el.find('[name="autocompletion1"]').val(), '', 'check autocompletion1 value')
  35. equal( el.find('[name="autocompletion1"]').prop('required'), true, 'check autocompletion1 required')
  36. equal( el.find('[data-name="richtext1"]').val(), '', 'check richtext1 value')
  37. //equal( el.find('[data-name="richtext1"]').prop('required'), true, 'check richtext1 required')
  38. params = App.ControllerForm.params( el )
  39. errors = form.validate(params)
  40. test_errors = {
  41. input1: "is required",
  42. password1: "is required",
  43. textarea1: "is required",
  44. select1: "is required",
  45. selectmulti1: "is required",
  46. autocompletion1: "is required",
  47. richtext1: "is required",
  48. datetime1: "is required",
  49. }
  50. deepEqual( errors, test_errors, 'validation errors check' )
  51. App.ControllerForm.validate( { errors: errors, form: el } )
  52. equal( el.find('[name="input1"]').closest('.form-group').hasClass('has-error'), true, 'check input1 has-error')
  53. equal( el.find('[name="input1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check input1 error message')
  54. equal( el.find('[name="password1"]').closest('.form-group').hasClass('has-error'), true, 'check password1 has-error')
  55. equal( el.find('[name="password1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check password1 error message')
  56. equal( el.find('[name="textarea1"]').closest('.form-group').hasClass('has-error'), true, 'check textarea1 has-error')
  57. equal( el.find('[name="textarea1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check textarea1 error message')
  58. equal( el.find('[name="select1"]').closest('.form-group').hasClass('has-error'), true, 'check select1 has-error')
  59. equal( el.find('[name="select1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check select1 error message')
  60. equal( el.find('[name="selectmulti1"]').closest('.form-group').hasClass('has-error'), true, 'check selectmulti1 has-error')
  61. equal( el.find('[name="selectmulti1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check selectmulti1 error message')
  62. equal( el.find('[name="autocompletion1"]').closest('.form-group').hasClass('has-error'), true, 'check autocompletion1 has-error')
  63. equal( el.find('[name="autocompletion1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check autocompletion1 error message')
  64. equal( el.find('[data-name="richtext1"]').closest('.form-group').hasClass('has-error'), true, 'check richtext1 has-error')
  65. equal( el.find('[data-name="richtext1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check richtext1 error message')
  66. equal( el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error')
  67. equal( el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message')
  68. });
  69. test( "datetime validation check", function() {
  70. $('#forms').append('<hr><h1>datetime validation check</h1><form id="form2"></form>')
  71. var el = $('#form2')
  72. var defaults = {}
  73. var form = new App.ControllerForm({
  74. el: el,
  75. model: {
  76. configure_attributes: [
  77. { name: 'datetime1', display: 'Datetime1', tag: 'datetime', null: false, default: defaults['datetime1'] },
  78. ],
  79. },
  80. params: defaults,
  81. });
  82. params = App.ControllerForm.params( el )
  83. errors = form.validate(params)
  84. test_errors = {
  85. datetime1: "is required",
  86. }
  87. deepEqual( errors, test_errors, 'validation errors check' )
  88. App.ControllerForm.validate( { errors: errors, form: el } )
  89. equal( el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error')
  90. equal( el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), 'is required', 'check datetime1 error message')
  91. el.find('[name="{datetime}datetime1___day"]').val('1')
  92. el.find('[name="{datetime}datetime1___month"]').val('1')
  93. el.find('[name="{datetime}datetime1___year"]').val('2015')
  94. el.find('[name="{datetime}datetime1___hour"]').val('12')
  95. el.find('[name="{datetime}datetime1___minute"]').val('42')
  96. params = App.ControllerForm.params( el )
  97. errors = form.validate(params)
  98. test_errors = undefined
  99. // datetime1: "invalid",
  100. // }
  101. deepEqual( errors, test_errors, 'validation errors check' )
  102. App.ControllerForm.validate( { errors: errors, form: el } )
  103. equal( el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), false, 'check datetime1 has-error')
  104. equal( el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message')
  105. el.find('[name="{datetime}datetime1___day"]').val('47')
  106. el.find('[name="{datetime}datetime1___month"]').val('1')
  107. el.find('[name="{datetime}datetime1___year"]').val('2015')
  108. el.find('[name="{datetime}datetime1___hour"]').val('12')
  109. el.find('[name="{datetime}datetime1___minute"]').val('42')
  110. params = App.ControllerForm.params( el )
  111. errors = form.validate(params)
  112. test_errors = {
  113. datetime1: "is required",
  114. }
  115. deepEqual( errors, test_errors, 'validation errors check' )
  116. App.ControllerForm.validate( { errors: errors, form: el } )
  117. equal( el.find('[data-name="datetime1"]').closest('.form-group').hasClass('has-error'), true, 'check datetime1 has-error')
  118. equal( el.find('[data-name="datetime1"]').closest('.form-group').find('.help-inline').text(), '', 'check datetime1 error message')
  119. });