Skip to content

Commit bdac9ad

Browse files
committed
fix(enhancedOnChange): handle empty string clearedValue and update tests
1 parent 15bd0b2 commit bdac9ad

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

packages/react-form-renderer/src/tests/form-renderer/enhanced-on-change.test.js

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,15 @@ describe('#enhancedOnChange', () => {
3737
type: 'checkbox',
3838
},
3939
};
40-
expect(enhancedOnChange({ onChange: (value) => value, clearedValue, initial }, valueFalse)).toEqual(valueFalse);
40+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, valueFalse)).toEqual(valueFalse);
4141

4242
const valueTrue = {
4343
target: {
4444
checked: true,
4545
type: 'checkbox',
4646
},
4747
};
48-
expect(enhancedOnChange({ onChange: (value) => value, clearedValue, initial }, valueTrue)).toEqual(valueTrue);
48+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, valueTrue)).toEqual(valueTrue);
4949
});
5050

5151
it('should correctly convert array datatype from strings to integers', () => {
@@ -61,39 +61,47 @@ describe('#enhancedOnChange', () => {
6161

6262
it('should set delete value after sending empty string value', () => {
6363
const value = undefined;
64-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(clearedValue);
65-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, '')).toEqual(clearedValue);
64+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(clearedValue);
65+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, '')).toEqual(clearedValue);
6666
});
6767

6868
it('should not set delete value after sending date', () => {
6969
const value = new Date(2021, 7, 20);
70-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(value);
70+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(value);
7171
});
7272

7373
it('should not set delete value after sending number 0', () => {
7474
const value = 0;
75-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(value);
75+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(value);
7676
});
7777

7878
it('should set delete value after sending empty array', () => {
7979
const value = [];
80-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(clearedValue);
80+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(clearedValue);
8181
});
8282

8383
it('should set delete value after sending empty object', () => {
8484
const value = {};
85-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(clearedValue);
85+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(clearedValue);
8686
});
8787

8888
it('should not set delete value after sending array', () => {
8989
const value = [1, 2, 'foo'];
90-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(value);
90+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(value);
9191
});
9292

9393
it('should not set delete value after sending object', () => {
9494
const value = { foo: 'bar' };
95-
expect(enhancedOnChange({ onChange: (value) => value, initial, clearedValue }, value)).toEqual(value);
95+
expect(enhancedOnChange({ onChange: (value) => value, clearedValue }, value)).toEqual(value);
9696
});
97+
it('should keep empty string when clearedValue is empty string', () => {
98+
const clearedValue = '';
99+
const value = undefined;
100+
const onChange = jest.fn();
101+
enhancedOnChange({ onChange, clearedValue }, value);
102+
expect(onChange).toHaveBeenCalledWith('');
103+
});
104+
97105
});
98106

99107
describe('#input type file', () => {

packages/react-form-renderer/src/use-field-api/enhanced-on-change.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const enhancedOnChange = ({ dataType, onChange, initial, clearedValue, dirty, ..
6868
: convertType(dataType, sanitizedValue);
6969
}
7070

71-
if (checkEmpty(result) && typeof initial !== 'undefined') {
71+
if (checkEmpty(result)) {
7272
return onChange(clearedValue, ...args);
7373
}
7474

packages/react-renderer-demo/src/examples/components/cleared-value.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ const ClearedValueExample = () => {
4949
);
5050
};
5151

52-
ClearedValueExample.displayName = 'Cleard value example';
52+
ClearedValueExample.displayName = 'Cleared value example';
5353

5454
export default ClearedValueExample;

0 commit comments

Comments
 (0)