container.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. describe('container form option', function() {
  2. beforeEach(function() {
  3. $([
  4. '<form id="containerForm" class="form-horizontal">',
  5. '<div class="form-group">',
  6. '<label class="col-lg-3 control-label">Full name</label>',
  7. '<div class="col-lg-4">',
  8. '<input type="text" class="form-control" name="firstName" required placeholder="First name" data-bv-notempty-message="The first name is required" />',
  9. '</div>',
  10. '<div class="col-lg-4">',
  11. '<input type="text" class="form-control" name="lastName" required placeholder="Last name" data-bv-notempty-message="The last name is required" />',
  12. '</div>',
  13. '</div>',
  14. '<div id="errors"></div>',
  15. '</form>'
  16. ].join('')).appendTo('body');
  17. });
  18. afterEach(function() {
  19. $('#containerForm').bootstrapValidator('destroy').remove();
  20. });
  21. it('form container declarative', function() {
  22. $('#containerForm')
  23. .attr('data-bv-container', '#errors')
  24. .bootstrapValidator();
  25. this.bv = $('#containerForm').data('bootstrapValidator');
  26. this.$firstName = this.bv.getFieldElements('firstName');
  27. this.$lastName = this.bv.getFieldElements('lastName');
  28. expect($('#errors').find('.help-block').length).toBeGreaterThan(0);
  29. this.$firstName.val('First');
  30. this.$lastName.val('');
  31. this.bv.validate();
  32. expect($('#errors').find('.help-block:visible[data-bv-for="firstName"]').length).toEqual(0);
  33. expect($('#errors').find('.help-block:visible[data-bv-for="lastName"]').length).toBeGreaterThan(0);
  34. });
  35. it('form container programmatically', function() {
  36. $('#containerForm').bootstrapValidator({
  37. container: '#errors'
  38. });
  39. this.bv = $('#containerForm').data('bootstrapValidator');
  40. this.$firstName = this.bv.getFieldElements('firstName');
  41. this.$lastName = this.bv.getFieldElements('lastName');
  42. expect($('#errors').find('.help-block').length).toBeGreaterThan(0);
  43. this.$firstName.val('');
  44. this.$lastName.val('Last');
  45. this.bv.validate();
  46. expect($('#errors').find('.help-block:visible[data-bv-for="firstName"]').length).toBeGreaterThan(0);
  47. expect($('#errors').find('.help-block:visible[data-bv-for="lastName"]').length).toEqual(0);
  48. this.bv.resetForm();
  49. this.$firstName.val('First');
  50. this.$lastName.val('Last');
  51. this.bv.validate();
  52. expect($('#errors').find('.help-block:visible').length).toEqual(0);
  53. });
  54. });
  55. describe('container field option', function() {
  56. beforeEach(function() {
  57. $([
  58. '<form id="containerForm" class="form-horizontal">',
  59. '<div class="form-group">',
  60. '<label class="col-lg-3 control-label">Full name</label>',
  61. '<div class="col-lg-4">',
  62. '<input type="text" class="form-control" name="firstName" required placeholder="First name" data-bv-notempty-message="The first name is required" data-bv-container="#firstNameMessage" />',
  63. '<span class="help-block" id="firstNameMessage" />',
  64. '</div>',
  65. '<div class="col-lg-4">',
  66. '<input type="text" class="form-control" name="lastName" required placeholder="Last name" data-bv-notempty-message="The last name is required" />',
  67. '<span class="help-block lastNameMessage" />',
  68. '</div>',
  69. '</div>',
  70. '</form>'
  71. ].join('')).appendTo('body');
  72. $('#containerForm').bootstrapValidator({
  73. feedbackIcons: {
  74. valid: 'glyphicon glyphicon-ok',
  75. invalid: 'glyphicon glyphicon-remove',
  76. validating: 'glyphicon glyphicon-refresh'
  77. },
  78. fields: {
  79. lastName: {
  80. container: '.lastNameMessage'
  81. }
  82. }
  83. });
  84. this.bv = $('#containerForm').data('bootstrapValidator');
  85. this.$firstName = this.bv.getFieldElements('firstName');
  86. this.$lastName = this.bv.getFieldElements('lastName');
  87. });
  88. afterEach(function() {
  89. $('#containerForm').bootstrapValidator('destroy').remove();
  90. });
  91. it('field container declarative', function() {
  92. expect($.trim($('#firstNameMessage').text())).toEqual('The first name is required');
  93. expect($.trim($('.lastNameMessage').text())).toEqual('The last name is required');
  94. });
  95. it('field container programmatically', function() {
  96. this.$firstName.val('First');
  97. this.$lastName.val('');
  98. this.bv.validate();
  99. expect($('#firstNameMessage').find('.help-block:visible').length).toEqual(0);
  100. expect($('.lastNameMessage').find('.help-block:visible').length).toBeGreaterThan(0);
  101. this.bv.resetForm();
  102. this.$firstName.val('');
  103. this.$lastName.val('Last');
  104. this.bv.validate();
  105. expect($('#firstNameMessage').find('.help-block:visible').length).toBeGreaterThan(0);
  106. expect($('.lastNameMessage').find('.help-block:visible').length).toEqual(0);
  107. });
  108. });
  109. describe('container tooltip/popover', function() {
  110. beforeEach(function() {
  111. $([
  112. '<form id="containerForm" class="form-horizontal">',
  113. '<div class="form-group">',
  114. '<label class="col-lg-3 control-label">Full name</label>',
  115. '<div class="col-lg-4">',
  116. '<input type="text" class="form-control" name="firstName" required placeholder="First name" data-bv-notempty-message="The first name is required" />',
  117. '</div>',
  118. '<div class="col-lg-4">',
  119. '<input type="text" class="form-control" name="lastName" required placeholder="Last name" data-bv-notempty-message="The last name is required" />',
  120. '</div>',
  121. '</div>',
  122. '<div id="errors"></div>',
  123. '</form>'
  124. ].join('')).appendTo('body');
  125. });
  126. afterEach(function() {
  127. $('#containerForm').bootstrapValidator('destroy').remove();
  128. });
  129. it('container declarative', function() {
  130. $('#containerForm')
  131. .attr('data-bv-container', 'tooltip')
  132. .find('[name="lastName"]')
  133. .attr('data-bv-container', 'popover')
  134. .end()
  135. .bootstrapValidator();
  136. this.bv = $('#containerForm').data('bootstrapValidator');
  137. this.$firstName = this.bv.getFieldElements('firstName');
  138. this.$lastName = this.bv.getFieldElements('lastName');
  139. this.bv.validate();
  140. expect(this.$firstName.parent().find('i').data('bs.tooltip')).toBeDefined();
  141. expect(this.$firstName.parent().find('i').data('bs.tooltip').type).toEqual('tooltip');
  142. expect(this.$lastName.parent().find('i').data('bs.popover')).toBeDefined();
  143. expect(this.$lastName.parent().find('i').data('bs.popover').type).toEqual('popover');
  144. this.bv.resetForm();
  145. this.$firstName.val('First');
  146. this.$lastName.val('Last');
  147. this.bv.validate();
  148. expect(this.$firstName.parent().find('i').data('bs.tooltip')).toBeDefined();
  149. expect(this.$lastName.parent().find('i').data('bs.popover')).toBeDefined();
  150. });
  151. it('container programmatically', function() {
  152. $('#containerForm').bootstrapValidator({
  153. container: 'tooltip',
  154. fields: {
  155. lastName: {
  156. container: 'popover'
  157. }
  158. }
  159. });
  160. this.bv = $('#containerForm').data('bootstrapValidator');
  161. this.$firstName = this.bv.getFieldElements('firstName');
  162. this.$lastName = this.bv.getFieldElements('lastName');
  163. this.bv.validate();
  164. expect(this.$firstName.parent().find('i').data('bs.tooltip')).toBeDefined();
  165. expect(this.$firstName.parent().find('i').data('bs.tooltip').type).toEqual('tooltip');
  166. expect(this.$lastName.parent().find('i').data('bs.popover')).toBeDefined();
  167. expect(this.$lastName.parent().find('i').data('bs.popover').type).toEqual('popover');
  168. this.bv.resetForm();
  169. this.$firstName.val('First');
  170. this.$lastName.val('Last');
  171. this.bv.validate();
  172. expect(this.$firstName.parent().find('i').data('bs.tooltip')).toBeDefined();
  173. expect(this.$lastName.parent().find('i').data('bs.popover')).toBeDefined();
  174. });
  175. });