Skip to content

Commit e1a5497

Browse files
authored
fix: cannot save nullish values for required fields (#2003)
1 parent 659c544 commit e1a5497

File tree

3 files changed

+57
-4
lines changed

3 files changed

+57
-4
lines changed

src/components/BrowserCell/BrowserCell.react.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ export default class BrowserCell extends Component {
168168
}
169169
this.onContextMenu = this.onContextMenu.bind(this);
170170

171-
if (this.props.markRequiredField && this.props.isRequired && !this.props.value) {
171+
if (this.props.markRequiredField && this.props.isRequired && this.props.value == null) {
172172
classes.push(styles.required);
173173
}
174174

@@ -396,7 +396,7 @@ export default class BrowserCell extends Component {
396396
if ( current ) {
397397
classes.push(styles.current);
398398
}
399-
if (markRequiredFieldRow === row && isRequired && !value) {
399+
if (markRequiredFieldRow === row && isRequired && value == null) {
400400
classes.push(styles.required);
401401
}
402402

src/dashboard/Data/Browser/Browser.react.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ class Browser extends DashboardView {
417417
if (requiredCols.length) {
418418
for (let idx = 0; idx < requiredCols.length; idx++) {
419419
const name = requiredCols[idx];
420-
if (!obj.get(name)) {
420+
if (obj.get(name) == null) {
421421
this.showNote("Please enter all required fields", true);
422422
this.setState({
423423
markRequiredFieldRow: -1
@@ -521,7 +521,7 @@ class Browser extends DashboardView {
521521
if (requiredCols.length) {
522522
for (let idx = 0; idx < requiredCols.length; idx++) {
523523
const name = requiredCols[idx];
524-
if (!obj.get(name)) {
524+
if (obj.get(name) == null) {
525525
this.showNote("Please enter all required fields", true);
526526
this.setState({
527527
markRequiredFieldRow: rowIndex

src/lib/tests/BrowserCell.test.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright (c) 2016-present, Parse, LLC
3+
* All rights reserved.
4+
*
5+
* This source code is licensed under the license found in the LICENSE file in
6+
* the root directory of this source tree.
7+
*/
8+
jest.dontMock('../../components/BrowserCell/BrowserCell.react');
9+
10+
import React from 'react';
11+
import renderer from 'react-test-renderer';
12+
const BrowserCell = require('../../components/BrowserCell/BrowserCell.react').default;
13+
14+
describe('BrowserCell', () => {
15+
16+
describe('Required fields', () => {
17+
18+
it('should not highlight 0 value', () => {
19+
const component = renderer.create(
20+
<BrowserCell value={0} markRequiredField={true} isRequired={true}/>
21+
).toJSON();
22+
expect(component.props.className).not.toContain('required');
23+
});
24+
25+
it('should not highlight false value', () => {
26+
const component = renderer.create(
27+
<BrowserCell value={false} markRequiredField={true} isRequired={true}/>
28+
).toJSON();
29+
expect(component.props.className).not.toContain('required');
30+
});
31+
32+
it('should not highlight empty string value', () => {
33+
const component = renderer.create(
34+
<BrowserCell value="" markRequiredField={true} isRequired={true}/>
35+
).toJSON();
36+
expect(component.props.className).not.toContain('required');
37+
});
38+
39+
it('should highlight null value', () => {
40+
const component = renderer.create(
41+
<BrowserCell value={null} markRequiredField={true} isRequired={true}/>
42+
).toJSON();
43+
expect(component.props.className).toContain('required');
44+
});
45+
46+
it('should highlight undefined value', () => {
47+
const component = renderer.create(
48+
<BrowserCell markRequiredField={true} isRequired={true}/>
49+
).toJSON();
50+
expect(component.props.className).toContain('required');
51+
});
52+
});
53+
});

0 commit comments

Comments
 (0)