function validateCaptcha(value, validator, $field) {
var items = $('#captchaOperation').html().split(' '), sum = parseInt(items[0]) + parseInt(items[2]);
return value === sum + '';
};
describe('callback', function() {
beforeEach(function() {
$(['
'
].join('\n')).appendTo('body');
$('#callbackForm').bootstrapValidator({
fields: {
captcha: {
validators: {
callback: {
message: 'Wrong answer',
callback: function(value, validator, $field) {
return validateCaptcha(value, validator, $field);
}
}
}
}
}
});
this.bv = $('#callbackForm').data('bootstrapValidator');
this.$captcha = this.bv.getFieldElements('captcha');
this.$declarativeCaptcha = this.bv.getFieldElements('declarativeCaptcha');
});
afterEach(function() {
$('#callbackForm').bootstrapValidator('destroy').parent().remove();
});
it('execute the callback', function() {
$('#captchaOperation').html('1 + 2');
this.$captcha.val('3');
this.bv.validate();
expect(this.bv.isValidField('captcha')).toBeTruthy();
this.bv.resetForm();
this.$captcha.val('5');
this.bv.validate();
expect(this.bv.isValidField('captcha')).toEqual(false);
});
it('callback declarative', function() {
$('#captchaOperation').html('10 + 20');
this.$declarativeCaptcha.val('40');
this.bv.validate();
expect(this.bv.isValidField('declarativeCaptcha')).toEqual(false);
this.bv.resetForm();
this.$declarativeCaptcha.val('30');
this.bv.validate();
expect(this.bv.isValidField('declarativeCaptcha')).toBeTruthy();
});
});