Adds liniting into the workflow (#3082)

* initial linting of src

* fix indent to 2 spaces

* Removes unnecessary rules

* ignore spec folder for now

* Spec linting

* Fix spec indent

* nits

* nits

* no no-empty rule
This commit is contained in:
Florent Vilmart
2016-11-24 15:47:41 -05:00
committed by GitHub
parent 6e2fba4ae4
commit 8c2c76dd26
149 changed files with 3478 additions and 3507 deletions

View File

@@ -1,9 +1,7 @@
"use strict"
const Parse = require("parse/node");
const request = require('request');
const rp = require('request-promise');
const InMemoryCacheAdapter = require('../src/Adapters/Cache/InMemoryCacheAdapter').InMemoryCacheAdapter;
const triggers = require('../src/triggers');
describe('Cloud Code', () => {
it('can load absolute cloud code file', done => {
@@ -62,13 +60,15 @@ describe('Cloud Code', () => {
it('returns an error', (done) => {
Parse.Cloud.define('cloudCodeWithError', (req, res) => {
/* eslint-disable no-undef */
foo.bar();
/* eslint-enable no-undef */
res.success('I better throw an error.');
});
Parse.Cloud.run('cloudCodeWithError')
.then(
a => done.fail('should not succeed'),
() => done.fail('should not succeed'),
e => {
expect(e).toEqual(new Parse.Error(1, undefined));
done();
@@ -96,7 +96,7 @@ describe('Cloud Code', () => {
Parse.Cloud.beforeSave('BeforeSaveFailWithPromise', function (req, res) {
var query = new Parse.Query('Yolo');
query.find().then(() => {
res.error('Nope');
res.error('Nope');
}, () => {
res.success();
});
@@ -145,10 +145,10 @@ describe('Cloud Code', () => {
var obj = new Parse.Object('BeforeSaveChanged');
obj.set('foo', 'bing');
obj.save().then(() => {
obj.save().then(() => {
expect(obj.get('foo')).toEqual('baz');
obj.set('foo', 'bar');
return obj.save().then(() => {
return obj.save().then(() => {
expect(obj.get('foo')).toEqual('baz');
done();
})
@@ -180,34 +180,34 @@ describe('Cloud Code', () => {
it('test afterSave ran on created object and returned a promise', function(done) {
Parse.Cloud.afterSave('AfterSaveTest2', function(req) {
let obj = req.object;
if(!obj.existed())
let obj = req.object;
if(!obj.existed())
{
let promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
let promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
}
return promise;
}
});
let obj = new Parse.Object('AfterSaveTest2');
obj.save().then(function(){
let query = new Parse.Query('AfterSaveTest2');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(1);
let savedObject = results[0];
expect(savedObject.get('proof')).toEqual(obj.id);
done();
},
let query = new Parse.Query('AfterSaveTest2');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(1);
let savedObject = results[0];
expect(savedObject.get('proof')).toEqual(obj.id);
done();
},
function(error) {
fail(error);
done();
fail(error);
done();
});
});
});
@@ -215,124 +215,124 @@ describe('Cloud Code', () => {
// TODO: Fails on CI randomly as racing
xit('test afterSave ignoring promise, object not found', function(done) {
Parse.Cloud.afterSave('AfterSaveTest2', function(req) {
let obj = req.object;
if(!obj.existed())
let obj = req.object;
if(!obj.existed())
{
let promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
let promise = new Parse.Promise();
setTimeout(function(){
obj.set('proof', obj.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
return promise;
}
return promise;
}
});
let obj = new Parse.Object('AfterSaveTest2');
obj.save().then(function(){
done();
done();
})
let query = new Parse.Query('AfterSaveTest2');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(0);
expect(results.length).toEqual(0);
},
function(error) {
fail(error);
fail(error);
});
});
it('test afterSave rejecting promise', function(done) {
Parse.Cloud.afterSave('AfterSaveTest2', function(req) {
let promise = new Parse.Promise();
setTimeout(function(){
promise.reject("THIS SHOULD BE IGNORED");
}, 1000);
Parse.Cloud.afterSave('AfterSaveTest2', function() {
let promise = new Parse.Promise();
setTimeout(function(){
promise.reject("THIS SHOULD BE IGNORED");
}, 1000);
return promise;
});
return promise;
});
let obj = new Parse.Object('AfterSaveTest2');
obj.save().then(function(){
done();
}, function(error){
fail(error);
done();
})
let obj = new Parse.Object('AfterSaveTest2');
obj.save().then(function(){
done();
}, function(error){
fail(error);
done();
})
});
it('test afterDelete returning promise, object is deleted when destroy resolves', function(done) {
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
let promise = new Parse.Promise();
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
let promise = new Parse.Promise();
setTimeout(function(){
let obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
setTimeout(function(){
let obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
}, 1000);
return promise;
});
return promise;
});
let errorHandler = function(error) {
fail(error);
let errorHandler = function(error) {
fail(error);
done();
}
let obj = new Parse.Object('AfterDeleteTest2');
obj.save().then(function(){
obj.destroy().then(function(){
let query = new Parse.Query('AfterDeleteTestProof');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(1);
let deletedObject = results[0];
expect(deletedObject.get('proof')).toEqual(obj.id);
done();
}
let obj = new Parse.Object('AfterDeleteTest2');
obj.save().then(function(){
obj.destroy().then(function(){
let query = new Parse.Query('AfterDeleteTestProof');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(1);
let deletedObject = results[0];
expect(deletedObject.get('proof')).toEqual(obj.id);
done();
}, errorHandler);
}, errorHandler)
}, errorHandler);
}, errorHandler);
}, errorHandler)
}, errorHandler);
});
it('test afterDelete ignoring promise, object is not yet deleted', function(done) {
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
let promise = new Parse.Promise();
Parse.Cloud.afterDelete('AfterDeleteTest2', function(req) {
let promise = new Parse.Promise();
setTimeout(function(){
let obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
setTimeout(function(){
let obj = new Parse.Object('AfterDeleteTestProof');
obj.set('proof', req.object.id);
obj.save().then(function(){
promise.resolve();
});
}, 1000);
}, 1000);
return promise;
});
return promise;
});
let errorHandler = function(error) {
fail(error);
done();
}
let errorHandler = function(error) {
fail(error);
done();
}
let obj = new Parse.Object('AfterDeleteTest2');
obj.save().then(function(){
obj.destroy().then(function(){
done();
})
let obj = new Parse.Object('AfterDeleteTest2');
obj.save().then(function(){
obj.destroy().then(function(){
done();
})
let query = new Parse.Query('AfterDeleteTestProof');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(0);
}, errorHandler);
let query = new Parse.Query('AfterDeleteTestProof');
query.equalTo('proof', obj.id);
query.find().then(function(results) {
expect(results.length).toEqual(0);
}, errorHandler);
}, errorHandler);
});
it('test beforeSave happens on update', function(done) {
@@ -553,7 +553,7 @@ describe('Cloud Code', () => {
'array': ['a', 'b', 'c'],
'arrayOfArray': [['a', 'b', 'c'], ['d', 'e', 'f']]
};
Parse.Cloud.run('params', params).then((result) => {
Parse.Cloud.run('params', params).then(() => {
done();
});
});
@@ -583,7 +583,7 @@ describe('Cloud Code', () => {
Parse.Cloud.define('createBeforeSaveChangedObject', function(req, res){
var obj = new Parse.Object('BeforeSaveChanged');
obj.save().then(() => {
obj.save().then(() => {
res.success(obj);
})
})
@@ -707,7 +707,7 @@ describe('Cloud Code', () => {
obj.save({ foo: 'bar' }).then((objAgain) => {
expect(objAgain.get('foo')).toEqual('baz');
done();
}, (e) => {
}, () => {
fail('Should not have failed to save.');
done();
});
@@ -720,8 +720,7 @@ describe('Cloud Code', () => {
response.success();
});
Parse.Cloud.afterSave('ChangingObject', function(request, response) {
let json = request.object.toJSON();
Parse.Cloud.afterSave('ChangingObject', function(request) {
expect(request.object.has("file")).toBe(false);
expect(request.object.has("date")).toBe(false);
expect(request.object.get('file')).toBeUndefined();
@@ -747,9 +746,9 @@ describe('Cloud Code', () => {
return request.params.success === 100;
});
Parse.Cloud.run('functionWithParameterValidation', {"success":100}).then((s) => {
Parse.Cloud.run('functionWithParameterValidation', {"success":100}).then(() => {
done();
}, (e) => {
}, () => {
fail('Validation should not have failed.');
done();
});
@@ -883,7 +882,7 @@ describe('Cloud Code', () => {
});
});
it('beforeSave should not affect fetched pointers', done => {
it('beforeSave should not affect fetched pointers', done => {
Parse.Cloud.beforeSave('BeforeSaveUnchanged', (req, res) => {
res.success();
});
@@ -974,7 +973,7 @@ it('beforeSave should not affect fetched pointers', done => {
expect(aBeforeSaveObj.get('before')).toEqual('save');
expect(aBeforeSaveObj.get('remove')).toEqual(undefined);
done();
}).catch((err) => {
}).catch((err) => {
jfail(err);
done();
});
@@ -998,15 +997,15 @@ it('beforeSave should not affect fetched pointers', done => {
let object;
let testObject = new TestObject({key: 'value'});
testObject.save().then(() => {
object = new BeforeSaveObject();
return object.save().then(() => {
object.set({remove:testObject})
return object.save();
});
object = new BeforeSaveObject();
return object.save().then(() => {
object.set({remove:testObject})
return object.save();
});
}).then((objectAgain) => {
expect(objectAgain.get('remove')).toBeUndefined();
expect(object.get('remove')).toBeUndefined();
done();
expect(objectAgain.get('remove')).toBeUndefined();
expect(object.get('remove')).toBeUndefined();
done();
}).fail((err) => {
jfail(err);
done();
@@ -1021,7 +1020,7 @@ it('beforeSave should not affect fetched pointers', done => {
var object = req.object;
object.set('before', 'save');
testObj = new TestObject();
testObj.save().then(() => {
testObj.save().then(() => {
object.relation('testsRelation').add(testObj);
res.success();
}, res.error);
@@ -1038,10 +1037,10 @@ it('beforeSave should not affect fetched pointers', done => {
})
});
describe('cloud jobs', () => {
it('should define a job', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
describe('cloud jobs', () => {
it('should define a job', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
res.success();
});
}).not.toThrow();
@@ -1052,17 +1051,17 @@ it('beforeSave should not affect fetched pointers', done => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-Master-Key': Parse.masterKey,
},
}).then((result) => {
}).then(() => {
done();
}, (err) =>  {
}, (err) => {
fail(err);
done();
});
});
it('should not run without master key', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
it('should not run without master key', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
res.success();
});
}).not.toThrow();
@@ -1073,18 +1072,18 @@ it('beforeSave should not affect fetched pointers', done => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-REST-API-Key': 'rest',
},
}).then((result) => {
}).then(() => {
fail('Expected to be unauthorized');
done();
}, (err) =>  {
}, (err) => {
expect(err.statusCode).toBe(403);
done();
});
});
it('should run with master key', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
it('should run with master key', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
expect(req.functionName).toBeUndefined();
expect(req.jobName).toBe('myJob');
expect(typeof req.jobId).toBe('string');
@@ -1102,16 +1101,16 @@ it('beforeSave should not affect fetched pointers', done => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-Master-Key': Parse.masterKey,
},
}).then((response) => {
}, (err) =>  {
}).then(() => {
}, (err) => {
fail(err);
done();
});
});
it('should run with master key basic auth', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
it('should run with master key basic auth', (done) => {
expect(() => {
Parse.Cloud.job('myJob', (req, res) => {
expect(req.functionName).toBeUndefined();
expect(req.jobName).toBe('myJob');
expect(typeof req.jobId).toBe('string');
@@ -1125,25 +1124,25 @@ it('beforeSave should not affect fetched pointers', done => {
rp.post({
url: `http://${Parse.applicationId}:${Parse.masterKey}@localhost:8378/1/jobs/myJob`,
}).then((response) => {
}, (err) =>  {
}).then(() => {
}, (err) => {
fail(err);
done();
});
});
it('should set the message / success on the job', (done) => {
Parse.Cloud.job('myJob', (req, res) => {
it('should set the message / success on the job', (done) => {
Parse.Cloud.job('myJob', (req, res) => {
res.message('hello');
res.message().then(() => {
res.message().then(() => {
return getJobStatus(req.jobId);
}).then((jobStatus) => {
}).then((jobStatus) => {
expect(jobStatus.get('message')).toEqual('hello');
expect(jobStatus.get('status')).toEqual('running');
return res.success().then(() => {
return res.success().then(() => {
return getJobStatus(req.jobId);
});
}).then((jobStatus) => {
}).then((jobStatus) => {
expect(jobStatus.get('message')).toEqual('hello');
expect(jobStatus.get('status')).toEqual('succeeded');
done();
@@ -1160,18 +1159,18 @@ it('beforeSave should not affect fetched pointers', done => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-Master-Key': Parse.masterKey,
},
}).then((response) => {
}, (err) =>  {
}).then(() => {
}, (err) => {
fail(err);
done();
});
});
it('should set the failure on the job', (done) => {
Parse.Cloud.job('myJob', (req, res) => {
res.error('Something went wrong').then(() => {
it('should set the failure on the job', (done) => {
Parse.Cloud.job('myJob', (req, res) => {
res.error('Something went wrong').then(() => {
return getJobStatus(req.jobId);
}).then((jobStatus) => {
}).then((jobStatus) => {
expect(jobStatus.get('message')).toEqual('Something went wrong');
expect(jobStatus.get('status')).toEqual('failed');
done();
@@ -1187,8 +1186,8 @@ it('beforeSave should not affect fetched pointers', done => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-Master-Key': Parse.masterKey,
},
}).then((response) => {
}, (err) =>  {
}).then(() => {
}, (err) => {
fail(err);
done();
});
@@ -1202,8 +1201,8 @@ it('beforeSave should not affect fetched pointers', done => {
});
describe('beforeFind hooks', () => {
it('should add beforeFind trigger', (done) => {
Parse.Cloud.beforeFind('MyObject', (req, res) => {
it('should add beforeFind trigger', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
let q = req.query;
expect(q instanceof Parse.Query).toBe(true);
let jsonQuery = q.toJSON();
@@ -1219,13 +1218,13 @@ describe('beforeFind hooks', () => {
query.greaterThan('some', 10);
query.include('otherKey');
query.include('otherValue');
query.find().then(() => {
query.find().then(() => {
done();
});
});
it('should use modify', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
it('should use modify', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
let q = req.query;
q.equalTo('forced', true);
});
@@ -1235,10 +1234,10 @@ describe('beforeFind hooks', () => {
let obj1 = new Parse.Object('MyObject');
obj1.set('forced', true);
Parse.Object.saveAll([obj0, obj1]).then(() => {
Parse.Object.saveAll([obj0, obj1]).then(() => {
let query = new Parse.Query('MyObject');
query.equalTo('forced', false);
query.find().then((results) => {
query.find().then((results) => {
expect(results.length).toBe(1);
let firstResult = results[0];
expect(firstResult.get('forced')).toBe(true);
@@ -1247,8 +1246,8 @@ describe('beforeFind hooks', () => {
});
});
it('should use the modified the query', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
it('should use the modified the query', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
let q = req.query;
let otherQuery = new Parse.Query('MyObject');
otherQuery.equalTo('forced', true);
@@ -1260,34 +1259,34 @@ describe('beforeFind hooks', () => {
let obj1 = new Parse.Object('MyObject');
obj1.set('forced', true);
Parse.Object.saveAll([obj0, obj1]).then(() => {
Parse.Object.saveAll([obj0, obj1]).then(() => {
let query = new Parse.Query('MyObject');
query.equalTo('forced', false);
query.find().then((results) => {
query.find().then((results) => {
expect(results.length).toBe(2);
done();
});
});
});
it('should reject queries', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
it('should reject queries', (done) => {
Parse.Cloud.beforeFind('MyObject', () => {
return Promise.reject('Do not run that query');
});
let query = new Parse.Query('MyObject');
query.find().then(() => {
query.find().then(() => {
fail('should not succeed');
done();
}, (err) => {
}, (err) => {
expect(err.code).toBe(1);
expect(err.message).toEqual('Do not run that query');
done();
});
});
it('should handle empty where', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
it('should handle empty where', (done) => {
Parse.Cloud.beforeFind('MyObject', (req) => {
let otherQuery = new Parse.Query('MyObject');
otherQuery.equalTo('some', true);
return Parse.Query.or(req.query, otherQuery);
@@ -1299,9 +1298,9 @@ describe('beforeFind hooks', () => {
'X-Parse-Application-Id': Parse.applicationId,
'X-Parse-REST-API-Key': 'rest',
},
}).then((result) => {
}).then(() => {
done();
}, (err) =>  {
}, (err) => {
fail(err);
done();
});
@@ -1397,19 +1396,19 @@ describe('afterFind hooks', () => {
obj.save().then(function() {
let query = new Parse.Query('MyObject');
query.equalTo('objectId',obj.id);
query.find().then(function(results) {
query.find().then(function() {
fail("AfterFind should handle response failure correctly");
done();
}, function(error) {
}, function() {
done();
});
}, function(error) {
}, function() {
done();
});
});
it('should also work with promise',(done) => {
Parse.Cloud.afterFind('MyObject', (req, res) => {
Parse.Cloud.afterFind('MyObject', (req) => {
let promise = new Parse.Promise();
setTimeout(function(){
for(let i = 0 ; i < req.objects.length ; i++){