diff --git a/scm-ui/src/components/validation.test.js b/scm-ui/src/components/validation.test.js index 74b9debd28..c264b20a1c 100644 --- a/scm-ui/src/components/validation.test.js +++ b/scm-ui/src/components/validation.test.js @@ -85,3 +85,18 @@ describe("test mail validation", () => { } }); }); + +describe("test number validation", () => { + it("should return false", () => { + const invalid = ["1a", "35gu", "dj6", "45,5", "test"]; + for (let number of invalid) { + expect(validator.isNumberValid(number)).toBe(false); + } + }); + it("should return true", () => { + const valid = ["1", "35", "2", "235", "34.4"]; + for (let number of valid) { + expect(validator.isNumberValid(number)).toBe(true); + } + }); +}); diff --git a/scm-ui/src/config/components/form/ConfigForm.js b/scm-ui/src/config/components/form/ConfigForm.js index 430ad6abb2..0dbd4e83ba 100644 --- a/scm-ui/src/config/components/form/ConfigForm.js +++ b/scm-ui/src/config/components/form/ConfigForm.js @@ -21,7 +21,10 @@ type Props = { type State = { config: Config, showNotification: boolean, - loginAttemptError: boolean + error: { + loginAttemptLimitTimeout: boolean, + loginAttemptLimit: boolean + } }; class ConfigForm extends React.Component { @@ -54,7 +57,10 @@ class ConfigForm extends React.Component { _links: {} }, showNotification: false, - loginAttemptError: true + error: { + loginAttemptLimitTimeout: false, + loginAttemptLimit: false + } }; } @@ -151,25 +157,40 @@ class ConfigForm extends React.Component { ); } - onChange = (isValid: boolean, changedValue: any, name: string) => { this.setState({ ...this.state, config: { ...this.state.config, [name]: changedValue + }, + error: { + ...this.state.error, + [name]: !isValid } }); }; - isValid = () => { - return this.state.loginAttemptError; + hasError = () => { + console.log("loginAttemtLimit " + this.state.error.loginAttemptLimit); + console.log( + "loginAttemtLimitTimeout " + this.state.error.loginAttemptLimitTimeout + ); + + console.log( + this.state.error.loginAttemptLimit || + this.state.error.loginAttemptLimitTimeout + ); + return ( + this.state.error.loginAttemptLimit || + this.state.error.loginAttemptLimitTimeout + ); }; onClose = () => { diff --git a/scm-ui/src/config/components/form/LoginAttempt.js b/scm-ui/src/config/components/form/LoginAttempt.js index 489828fd0b..da3a4ce0da 100644 --- a/scm-ui/src/config/components/form/LoginAttempt.js +++ b/scm-ui/src/config/components/form/LoginAttempt.js @@ -64,7 +64,11 @@ class LoginAttempt extends React.Component { ...this.state, loginAttemptLimitError: !validator.isNumberValid(value) }); - this.props.onChange(this.loginAttemptIsValid(), value, "loginAttemptLimit"); + this.props.onChange( + validator.isNumberValid(value), + value, + "loginAttemptLimit" + ); }; handleLoginAttemptLimitTimeoutChange = (value: string) => { @@ -73,18 +77,11 @@ class LoginAttempt extends React.Component { loginAttemptLimitTimeoutError: !validator.isNumberValid(value) }); this.props.onChange( - this.loginAttemptIsValid(), + validator.isNumberValid(value), value, "loginAttemptLimitTimeout" ); }; - - loginAttemptIsValid = () => { - return ( - this.state.loginAttemptLimitError || - this.state.loginAttemptLimitTimeoutError - ); - }; } export default translate("config")(LoginAttempt);