parent
1f52d23d67
commit
6f8ecfdf5c
|
@ -1567,7 +1567,14 @@ function coerceArray(val) {
|
||||||
throw new Error(g.f('Value is not an {{array}} or {{object}} with sequential numeric indices'));
|
throw new Error(g.f('Value is not an {{array}} or {{object}} with sequential numeric indices'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var arrayVal = new Array(Object.keys(val).length);
|
// It is an object, check if empty
|
||||||
|
var props = Object.keys(val);
|
||||||
|
|
||||||
|
if (props.length === 0) {
|
||||||
|
throw new Error(g.f('Value is an empty {{object}}'));
|
||||||
|
}
|
||||||
|
|
||||||
|
var arrayVal = new Array(props.length);
|
||||||
for (var i = 0; i < arrayVal.length; ++i) {
|
for (var i = 0; i < arrayVal.length; ++i) {
|
||||||
if (!val.hasOwnProperty(i)) {
|
if (!val.hasOwnProperty(i)) {
|
||||||
throw new Error(g.f('Value is not an {{array}} or {{object}} with sequential numeric indices'));
|
throw new Error(g.f('Value is not an {{array}} or {{object}} with sequential numeric indices'));
|
||||||
|
|
|
@ -1312,6 +1312,8 @@ describe('DataAccessObject', function() {
|
||||||
date: Date,
|
date: Date,
|
||||||
location: 'GeoPoint',
|
location: 'GeoPoint',
|
||||||
scores: [Number],
|
scores: [Number],
|
||||||
|
array: 'array',
|
||||||
|
object: 'object',
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1546,7 +1548,7 @@ describe('DataAccessObject', function() {
|
||||||
assert(error, 'An error should have been thrown');
|
assert(error, 'An error should have been thrown');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('throws an error if the filter.limit property is nagative', function() {
|
it('throws an error if the filter.limit property is negative', function() {
|
||||||
try {
|
try {
|
||||||
// The limit param must be a valid number
|
// The limit param must be a valid number
|
||||||
filter = model._normalize({limit: -1});
|
filter = model._normalize({limit: -1});
|
||||||
|
@ -1627,6 +1629,18 @@ describe('DataAccessObject', function() {
|
||||||
assert.deepEqual(where, {date: undefined});
|
assert.deepEqual(where, {date: undefined});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('does not coerce empty objects to arrays', function() {
|
||||||
|
where = model._coerce({object: {}});
|
||||||
|
where.object.should.not.be.an.Array();
|
||||||
|
where.object.should.be.an.Object();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not coerce an empty array', function() {
|
||||||
|
where = model._coerce({array: []});
|
||||||
|
where.array.should.be.an.Array();
|
||||||
|
where.array.should.have.length(0);
|
||||||
|
});
|
||||||
|
|
||||||
it('does not coerce to a number for a simple value that produces NaN',
|
it('does not coerce to a number for a simple value that produces NaN',
|
||||||
function() {
|
function() {
|
||||||
where = model._coerce({age: 'xyz'});
|
where = model._coerce({age: 'xyz'});
|
||||||
|
|
Loading…
Reference in New Issue