Skip to content
This repository was archived by the owner on Jun 23, 2023. It is now read-only.

Commit c886845

Browse files
committed
Missing tests and bump version
1 parent c2bdd7e commit c886845

File tree

4 files changed

+63
-10
lines changed

4 files changed

+63
-10
lines changed

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-nice-input-password",
3-
"version": "1.0.11",
3+
"version": "2.0.0",
44
"description": "React input password component",
55
"main": "dist/react-nice-input-password.js",
66
"style": "dist/react-nice-input-password.css",
@@ -69,13 +69,13 @@
6969
"postcss-loader": "^2.0.10",
7070
"postcss-modules": "^1.1.0",
7171
"react-dev-utils": "^4.2.1",
72-
"react-dom": "^16.2.0",
7372
"sass-loader": "^6.0.6",
7473
"style-loader": "^0.19.1",
7574
"webpack": "^3.10.0"
7675
},
7776
"dependencies": {
7877
"prop-types": "^15.6.0",
78+
"react-dom": "^16.2.0",
7979
"react": "^16.2.0"
8080
}
8181
}

src/NiceInputPassword.jsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,35 +99,35 @@ class NiceInputPassword extends React.Component {
9999
let inputClassName = '';
100100
const levelsMarkerNode =
101101
this.state.levels.map((item, index) => {
102-
let markclassName = '';
102+
let markerClassName = '';
103103
const levelsLength = this.state.levels.length;
104104
const levelsValidLength = this.state.levels.filter(level => level.isValid).length;
105105

106106
if (value !== '') {
107107
switch (true) {
108108
case levelsLength === levelsValidLength:
109-
markclassName = successClassName;
109+
markerClassName = successClassName;
110110
break;
111111

112112
case levelsValidLength === 1 && index === 0:
113-
markclassName = dangerClassName;
113+
markerClassName = dangerClassName;
114114
break;
115115

116116
case levelsValidLength > 1 && index < levelsValidLength:
117-
markclassName = warningClassName;
117+
markerClassName = warningClassName;
118118
break;
119119

120120
default:
121-
markclassName = normalClassName;
121+
markerClassName = normalClassName;
122122
break;
123123
}
124124
}
125125

126126
if (index === 0) {
127-
inputClassName = markclassName;
127+
inputClassName = markerClassName;
128128
}
129129

130-
return <div className={markclassName} key={`marker-${escape(item.descriptionLabel)}`} />;
130+
return <div className={markerClassName} key={`marker-${escape(item.descriptionLabel)}`} />;
131131
});
132132

133133
const levelsDescriptionNode =

src/NiceInputPassword.test.jsx

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import React from 'react';
22
import { render } from 'react-dom';
3+
import ReactTestUtils from 'react-dom/test-utils';
34

45
import NiceInputPassword from './NiceInputPassword';
56

@@ -272,5 +273,57 @@ describe('components', () => {
272273
expect(markers[2].className).toBe('yellow');
273274
expect(markers[3].className).toBe('gray');
274275
});
276+
277+
it('must validate with regex validator', () => {
278+
const securityLevels = [
279+
{
280+
descriptionLabel: 'Validate letter',
281+
validator: /.*[a-zA-Z].*/,
282+
},
283+
];
284+
const div = document.createElement('div');
285+
render(<NiceInputPassword
286+
label="myLabel"
287+
name="myName"
288+
securityLevels={securityLevels}
289+
dangerClassName="red"
290+
successClassName="green"
291+
warningClassName="yellow"
292+
normalClassName="gray"
293+
showSecurityLevelDescription
294+
showSecurityLevelBar
295+
value="abcd"
296+
/>, div);
297+
298+
const input = div.querySelector('#myName');
299+
const markers = div.querySelectorAll('.input-password__marker div');
300+
const descriptions = div.querySelectorAll('.input-password__description li');
301+
302+
expect(descriptions[0].className).toBe('red');
303+
expect(markers[0].className).toBe('gray');
304+
305+
input.value = 'newValue';
306+
ReactTestUtils.Simulate.change(input);
307+
308+
expect(descriptions[0].className).toBe('green');
309+
expect(markers[0].className).toBe('green');
310+
});
311+
312+
it('calls onChange handler', () => {
313+
const onChange = jest.fn();
314+
const div = document.createElement('div');
315+
render(<NiceInputPassword
316+
label="myLabel"
317+
name="myName"
318+
value=""
319+
onChange={onChange}
320+
/>, div);
321+
322+
const input = div.querySelector('#myName');
323+
input.value = 'newValue';
324+
ReactTestUtils.Simulate.change(input);
325+
326+
expect(onChange).toHaveBeenCalled();
327+
});
275328
});
276329
});

src/components/InputLabel.test.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ describe('components', () => {
3636
expect(input.placeholder).toBe('myPlaceholder');
3737
});
3838

39-
it('calls onChange and returns data', () => {
39+
it('calls onChange handler', () => {
4040
const onChange = jest.fn();
4141
const elementName = 'myInput';
4242

0 commit comments

Comments
 (0)