Skip to content

Commit 8d10447

Browse files
committed
Merge pull request #908 from ParsePlatform/nlutsenko.geoPoint
Fix flaky Parse.GeoPoint test.
2 parents 98769a2 + 0abd5a5 commit 8d10447

File tree

2 files changed

+33
-34
lines changed

2 files changed

+33
-34
lines changed

spec/ParseGeoPoint.spec.js

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -39,37 +39,33 @@ describe('Parse.GeoPoint testing', () => {
3939
});
4040
});
4141

42-
//
43-
// This test is disabled, since it's extremely flaky on Travis-CI.
44-
// Tracking issue: https://github.com/ParsePlatform/parse-server/issues/572
45-
//
46-
// it('geo line', (done) => {
47-
// var line = [];
48-
// for (var i = 0; i < 10; ++i) {
49-
// var obj = new TestObject();
50-
// var point = new Parse.GeoPoint(i * 4.0 - 12.0, i * 3.2 - 11.0);
51-
// obj.set('location', point);
52-
// obj.set('construct', 'line');
53-
// obj.set('seq', i);
54-
// line.push(obj);
55-
// }
56-
// Parse.Object.saveAll(line, {
57-
// success: function() {
58-
// var query = new Parse.Query(TestObject);
59-
// var point = new Parse.GeoPoint(24, 19);
60-
// query.equalTo('construct', 'line');
61-
// query.withinMiles('location', point, 10000);
62-
// query.find({
63-
// success: function(results) {
64-
// equal(results.length, 10);
65-
// equal(results[0].get('seq'), 9);
66-
// equal(results[3].get('seq'), 6);
67-
// done();
68-
// }
69-
// });
70-
// }
71-
// });
72-
// });
42+
it('geo line', (done) => {
43+
var line = [];
44+
for (var i = 0; i < 10; ++i) {
45+
var obj = new TestObject();
46+
var point = new Parse.GeoPoint(i * 4.0 - 12.0, i * 3.2 - 11.0);
47+
obj.set('location', point);
48+
obj.set('construct', 'line');
49+
obj.set('seq', i);
50+
line.push(obj);
51+
}
52+
Parse.Object.saveAll(line, {
53+
success: function() {
54+
var query = new Parse.Query(TestObject);
55+
var point = new Parse.GeoPoint(24, 19);
56+
query.equalTo('construct', 'line');
57+
query.withinMiles('location', point, 10000);
58+
query.find({
59+
success: function(results) {
60+
equal(results.length, 10);
61+
equal(results[0].get('seq'), 9);
62+
equal(results[3].get('seq'), 6);
63+
done();
64+
}
65+
});
66+
}
67+
});
68+
});
7369

7470
it('geo max distance large', (done) => {
7571
var objects = [];

src/Schema.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,9 +448,12 @@ class Schema {
448448
geocount++;
449449
}
450450
if (geocount > 1) {
451-
throw new Parse.Error(
452-
Parse.Error.INCORRECT_TYPE,
453-
'there can only be one geopoint field in a class');
451+
// Make sure all field validation operations run before we return.
452+
// If not - we are continuing to run logic, but already provided response from the server.
453+
return promise.then(() => {
454+
return Promise.reject(new Parse.Error(Parse.Error.INCORRECT_TYPE,
455+
'there can only be one geopoint field in a class'));
456+
});
454457
}
455458
if (!expected) {
456459
continue;

0 commit comments

Comments
 (0)