Last active
August 29, 2015 14:07
-
-
Save voitau/f03ea7564ee77ac5b6a5 to your computer and use it in GitHub Desktop.
LoopBack: findOne() returns non-empty result if value of filter criteria is undefined
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "Car", | |
"plural": "Cars", | |
"base": "PersistedModel", | |
"properties": { | |
"number": { | |
"type": "string", | |
"required": true | |
} | |
}, | |
"validations": [], | |
"relations": {}, | |
"acls": [], | |
"methods": [] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var app = require('../server/server'); | |
var request = require('supertest'); | |
var assert = require('assert'); | |
describe('Create and query car', function() { | |
var newCar = { number: "1234" }; | |
var Car = app.models.Car; | |
before(function() { | |
Car.create(newCar); | |
}); | |
describe('REST API', function() { | |
it('should find by existing number', function (done) { | |
request(app) | |
.get('/api/cars/findOne?filter[where][number]=1234') | |
.set('Content-Type', 'application/json') | |
.expect(200) | |
.end(function (err, res) { | |
if (err) { | |
return done(err); | |
} | |
assert.equal(res.body.number, newCar.number); | |
done(); | |
}); | |
}); | |
it('should find any if query number is not specified', function(done) { | |
request(app) | |
.get('/api/cars/findOne') | |
.set('Content-Type', 'application/json') | |
.expect(200) | |
.end(function (err, res) { | |
if (err) { | |
return done(err); | |
} | |
assert.equal(res.body.number, newCar.number); | |
done(); | |
}); | |
}); | |
it('should not find if query number is empty', function(done) { | |
request(app) | |
.get('/api/cars/findOne?filter[where][number]=') | |
.set('Content-Type', 'application/json') | |
.expect(404) | |
.end(function (err, res) { | |
if (err) { | |
return done(err); | |
} | |
done(); | |
}); | |
}); | |
}); | |
describe('NODE API', function() { | |
it('should find by existing number', function (done) { | |
Car.findOne({ where: { number: "1234" }}, function(err, car) { | |
if (err) { | |
return done(err); | |
} else { | |
assert.equal(car.number, newCar.number); | |
done(); | |
} | |
}); | |
}); | |
it('should find if query not specified', function(done) { | |
Car.findOne(function(err, car) { | |
if (err) { | |
return done(err); | |
} else { | |
assert.equal(car.number, newCar.number); | |
done(); | |
} | |
}); | |
}); | |
it('should not find if query number is empty string', function(done) { | |
Car.findOne({ where: { number: "" }}, function(err, car) { | |
if (err) { | |
return done(err); | |
} else { | |
assert.ok(car == null); | |
done(); | |
} | |
}); | |
}); | |
it('should not find if query number is "undefined"', function(done) { | |
Car.findOne({ where: { number: undefined }}, function(err, car) { | |
if (err) { | |
return done(err); | |
} else { | |
assert.ok(car == null, "Found car by incomplete query"); | |
done(); | |
} | |
}); | |
}); | |
}); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ mocha tests/* | |
Create and query car | |
REST API | |
✓ should find by existing number | |
✓ should find any if query number is not specified | |
✓ should not find if query number is empty | |
NODE API | |
✓ should find by existing number | |
✓ should find if query not specified | |
✓ should not find if query number is empty string | |
1) should not find if query number is "undefined" | |
6 passing (41ms) | |
1 failing | |
1) Create and query car NODE API should not find if query number is "undefined": | |
Uncaught AssertionError: Found car by incomplete query |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment