From af0a90d12c62a10c00a64bd795e25f5dfc82dea7 Mon Sep 17 00:00:00 2001 From: Tobias Stevenson Date: Wed, 18 May 2016 17:55:03 -0500 Subject: [PATCH 1/2] Add prop to overide validator with custom one. --- src/Form.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Form.js b/src/Form.js index d8b82dc..bfdee29 100644 --- a/src/Form.js +++ b/src/Form.js @@ -200,7 +200,7 @@ export default class Form extends InputContainer { if (typeof this.props.validateOne === 'function') { result = this.props.validateOne(iptName, value, context, result); - } + } // if result is !== true, it is considered an error // it can be either bool or string error if (result !== true) { @@ -261,6 +261,9 @@ export default class Form extends InputContainer { }); let validator = (input.props && input.props.type) === 'file' ? FileValidator : Validator; + if (input.props && input.props.validator) { + validator = input.props.validator; + } return val => { let result = true; @@ -331,6 +334,7 @@ Form.propTypes = { method : React.PropTypes.oneOf(['get', 'post']), onValidSubmit : React.PropTypes.func.isRequired, onInvalidSubmit: React.PropTypes.func, + validator : React.PropTypes.object, validateOne : React.PropTypes.func, validateAll : React.PropTypes.func, validationEvent: React.PropTypes.oneOf([ From 4ba120e33908e73a4f3589527d9d7f418eabc107 Mon Sep 17 00:00:00 2001 From: Tobias Stevenson Date: Thu, 19 May 2016 08:48:25 -0500 Subject: [PATCH 2/2] A couple tests. --- __tests__/RenderTests.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/__tests__/RenderTests.js b/__tests__/RenderTests.js index a5e4c53..2fc6e4b 100644 --- a/__tests__/RenderTests.js +++ b/__tests__/RenderTests.js @@ -5,9 +5,10 @@ import Form from '../src/Form'; describe('React bootstrap validation compilation test', () => { var React = require('react'); var TestUtils = require('react-addons-test-utils'); + var validator = require('validator'); beforeEach(function() { - + }); it('Renders Form component correctly.', () => { @@ -19,5 +20,22 @@ describe('React bootstrap validation compilation test', () => { // Do some work with the validation outcomes } } />); - }); + }); + + it('Renders Form with validation library as prop.', () => { + // Assemble + var form = TestUtils.renderIntoDocument( +
+ ); + }); + + it('Form validation has custom validation rule.', () => { + // Assemble + var form = TestUtils.renderIntoDocument( + + ); + validator.extend('isTrue', val => { return true; }); + + expect(form.props.validator.isTrue()).toBe(true); + }); });