group.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. describe('group option', function() {
  2. beforeEach(function() {
  3. $([
  4. '<form id="groupForm" method="post" class="form-horizontal">',
  5. '<div class="form-group">',
  6. '<div class="firstNameGroup">',
  7. '<label class="col-sm-2 control-label">First name</label>',
  8. '<div class="col-sm-4">',
  9. '<input type="text" class="form-control" name="firstName" />',
  10. '</div>',
  11. '</div>',
  12. '<div class="lastNameGroup">',
  13. '<label class="col-sm-2 control-label">Last name</label>',
  14. '<div class="col-sm-4">',
  15. '<input type="text" class="form-control" name="lastName" data-bv-group=".lastNameGroup" />',
  16. '</div>',
  17. '</div>',
  18. '</div>',
  19. '<div class="form-group">',
  20. '<label class="col-sm-2 control-label">Username</label>',
  21. '<div class="col-sm-5">',
  22. '<input type="text" class="form-control" name="username" />',
  23. '</div>',
  24. '</div>',
  25. '</form>'
  26. ].join('')).appendTo('body');
  27. $('#groupForm').bootstrapValidator({
  28. fields: {
  29. firstName: {
  30. group: '.firstNameGroup',
  31. validators: {
  32. notEmpty: {
  33. message: 'The first name is required and cannot be empty'
  34. }
  35. }
  36. },
  37. lastName: {
  38. validators: {
  39. notEmpty: {
  40. message: 'The last name is required and cannot be empty'
  41. }
  42. }
  43. },
  44. username: {
  45. validators: {
  46. notEmpty: {
  47. message: 'The username is required and cannot be empty'
  48. },
  49. stringLength: {
  50. min: 6,
  51. max: 30,
  52. message: 'The username must be more than 6 and less than 30 characters long'
  53. },
  54. regexp: {
  55. regexp: /^[a-zA-Z0-9_\.]+$/,
  56. message: 'The username can only consist of alphabetical, number, dot and underscore'
  57. }
  58. }
  59. }
  60. }
  61. });
  62. this.bv = $('#groupForm').data('bootstrapValidator');
  63. this.$firstName = this.bv.getFieldElements('firstName');
  64. this.$lastName = this.bv.getFieldElements('lastName');
  65. this.$username = this.bv.getFieldElements('username');
  66. });
  67. afterEach(function() {
  68. $('#groupForm').bootstrapValidator('destroy').remove();
  69. });
  70. it('group default', function() {
  71. this.$username.val('123@#$');
  72. this.bv.validate();
  73. expect(this.$username.parents('.form-group').hasClass('has-error')).toBeTruthy();
  74. expect(this.$username.parents('.form-group').hasClass('has-success')).toEqual(false);
  75. this.bv.resetForm();
  76. this.$username.val('validUser.Name');
  77. this.bv.validate();
  78. expect(this.$username.parents('.form-group').hasClass('has-success')).toBeTruthy();
  79. expect(this.$username.parents('.form-group').hasClass('has-error')).toEqual(false);
  80. });
  81. it('group programmatically', function() {
  82. this.$firstName.val('');
  83. this.bv.validate();
  84. expect(this.$firstName.parents('.firstNameGroup').hasClass('has-error')).toBeTruthy();
  85. expect(this.$firstName.parents('.firstNameGroup').hasClass('has-success')).toEqual(false);
  86. expect(this.$firstName.parents('.form-group').hasClass('has-error')).toEqual(false);
  87. });
  88. it('group declarative', function() {
  89. this.$firstName.val('First');
  90. this.$lastName.val('Last');
  91. this.bv.validate();
  92. expect(this.$lastName.parents('.lastNameGroup').hasClass('has-success')).toBeTruthy();
  93. expect(this.$lastName.parents('.lastNameGroup').hasClass('has-error')).toEqual(false);
  94. expect(this.$lastName.parents('.form-group').hasClass('has-success')).toEqual(false);
  95. expect(this.$lastName.parents('.form-group').hasClass('has-error')).toEqual(false);
  96. });
  97. });