Skip to content

Commit 8f695f1

Browse files
committed
Fix #494: Reject a promise on error condition
Also, remove two duplicate unit tests.
1 parent f713a2c commit 8f695f1

File tree

3 files changed

+23
-60
lines changed

3 files changed

+23
-60
lines changed

integration/test/ParseObjectTest.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,16 @@ 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(() => {
263+
done();
264+
});
265+
});
266+
257267
it('cannot create invalid class names', (done) => {
258268
let item = new Parse.Object('Foo^Bar');
259269
item.save().fail((e) => {

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(error.message));
18501852
});
18511853

18521854
return ParsePromise.when(batchTasks);

src/__tests__/ParseObject-test.js

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

1118+
it('should fail on invalid date', (done) => {
1119+
var obj = new ParseObject();
1120+
obj.set('when', new Date(Date.parse(null)));
1121+
ParseObject.saveAll([obj]).then(() => {
1122+
done.fail('Expected invalid date to fail');
1123+
}).fail(() => {
1124+
done();
1125+
});
1126+
jest.runAllTicks();
1127+
});
1128+
11181129
it('can save a ring of objects, given one exists', (done) => {
11191130
var xhrs = [];
11201131
RESTController._setXHR(function() {
@@ -1876,66 +1887,6 @@ describe('ParseObject (unique instance mode)', () => {
18761887
expect(o2.get('tags')).toEqual([]);
18771888
});
18781889

1879-
it('can save the object', (done) => {
1880-
CoreManager.getRESTController()._setXHR(
1881-
mockXHR([{
1882-
status: 200,
1883-
response: {
1884-
objectId: 'P1',
1885-
count: 1
1886-
}
1887-
}])
1888-
);
1889-
var p = new ParseObject('Person');
1890-
p.set('age', 38);
1891-
p.increment('count');
1892-
p.save().then((obj) => {
1893-
expect(obj).toBe(p);
1894-
expect(obj.get('age')).toBe(38);
1895-
expect(obj.get('count')).toBe(1);
1896-
expect(obj.op('age')).toBe(undefined);
1897-
expect(obj.dirty()).toBe(false);
1898-
done();
1899-
});
1900-
});
1901-
1902-
it('can save an array of objects', (done) => {
1903-
var xhr = {
1904-
setRequestHeader: jest.genMockFn(),
1905-
open: jest.genMockFn(),
1906-
send: jest.genMockFn()
1907-
};
1908-
RESTController._setXHR(function() { return xhr; });
1909-
var objects = [];
1910-
for (var i = 0; i < 5; i++) {
1911-
objects[i] = new ParseObject('Person');
1912-
}
1913-
ParseObject.saveAll(objects).then(() => {
1914-
expect(xhr.open.mock.calls[0]).toEqual(
1915-
['POST', 'https://api.parse.com/1/batch', true]
1916-
);
1917-
expect(JSON.parse(xhr.send.mock.calls[0]).requests[0]).toEqual({
1918-
method: 'POST',
1919-
path: '/1/classes/Person',
1920-
body: {}
1921-
});
1922-
done();
1923-
});
1924-
jest.runAllTicks();
1925-
1926-
xhr.status = 200;
1927-
xhr.responseText = JSON.stringify([
1928-
{ success: { objectId: 'pid0' } },
1929-
{ success: { objectId: 'pid1' } },
1930-
{ success: { objectId: 'pid2' } },
1931-
{ success: { objectId: 'pid3' } },
1932-
{ success: { objectId: 'pid4' } },
1933-
]);
1934-
xhr.readyState = 4;
1935-
xhr.onreadystatechange();
1936-
jest.runAllTicks();
1937-
});
1938-
19391890
it('preserves changes when changing the id', () => {
19401891
var o = new ParseObject({
19411892
className: 'Item',

0 commit comments

Comments
 (0)