Skip to content

Commit c07018c

Browse files
committed
Fix parse-community#494: Reject a promise on error condition
1 parent f713a2c commit c07018c

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

integration/test/ParseObjectTest.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,18 @@ describe('Parse Object', () => {
254254
});
255255
});
256256

257+
it('cannot set an invalid date', (done) => {
258+
let obj = new TestObject();
259+
obj.set('when', new Date(Date.parse(null)));
260+
Parse.Object.saveAll([obj]).then(() => {
261+
done.fail('Expected invalid date to fail');
262+
}).fail((error) => {
263+
expect(error[0].code).toEqual(ParseError.INVALID_VALUE);
264+
expect(error[0].message).toEqual('Tried to encode an invalid date.');
265+
done();
266+
});
267+
});
268+
257269
it('cannot create invalid class names', (done) => {
258270
let item = new Parse.Object('Foo^Bar');
259271
item.save().fail((e) => {

src/ParseError.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,3 +493,11 @@ ParseError.FILE_READ_ERROR = 601;
493493
* @final
494494
*/
495495
ParseError.X_DOMAIN_REQUEST = 602;
496+
497+
/**
498+
* Error code indicating an invalid value of an object field is passed.
499+
* @property INVALID_VALUE
500+
* @static
501+
* @final
502+
*/
503+
ParseError.INVALID_VALUE = 603;

src/ParseObject.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1847,6 +1847,8 @@ var DefaultController = {
18471847
}, options);
18481848
}).then((response, status, xhr) => {
18491849
batchReturned.resolve(response, status);
1850+
}, (error) => {
1851+
batchReturned.reject(new ParseError(ParseError.INVALID_VALUE, error.message));
18501852
});
18511853

18521854
return ParsePromise.when(batchTasks);

src/__tests__/ParseObject-test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,19 @@ describe('ParseObject', () => {
11151115
});
11161116
});
11171117

1118+
it('should fail on invalid date', (done) => {
1119+
var obj = new ParseObject('Item');
1120+
obj.set('when', new Date(Date.parse(null)));
1121+
ParseObject.saveAll([obj]).then(() => {
1122+
done.fail('Expected invalid date to fail');
1123+
}).fail((error) => {
1124+
expect(error[0].code).toEqual(ParseError.INVALID_VALUE);
1125+
expect(error[0].message).toEqual('Tried to encode an invalid date.');
1126+
done();
1127+
});
1128+
jest.runAllTicks();
1129+
});
1130+
11181131
it('can save a ring of objects, given one exists', (done) => {
11191132
var xhrs = [];
11201133
RESTController._setXHR(function() {

0 commit comments

Comments
 (0)