@feathersjs/adapter-tests
Advanced tools
Comparing version 4.5.2 to 4.5.3
@@ -6,2 +6,13 @@ # Change Log | ||
## 4.5.3 (2020-09-24) | ||
### Bug Fixes | ||
* **adapter-tests:** Update multi patch + query tests ([#5](https://github.com/feathersjs/databases/issues/5)) ([84f1fe4](https://github.com/feathersjs/databases/commit/84f1fe4f13dc3a26891e43b965f75d08243f6c6f)) | ||
## [4.5.2](https://github.com/feathersjs/feathers/compare/v4.5.1...v4.5.2) (2020-03-04) | ||
@@ -8,0 +19,0 @@ |
@@ -1,53 +0,44 @@ | ||
const assert = require('assert'); | ||
module.exports = (test, app, errors, serviceName, idProp) => { | ||
describe('Basic Functionality', () => { | ||
let service; | ||
beforeEach(() => { | ||
service = app.service(serviceName); | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const assert_1 = __importDefault(require("assert")); | ||
exports.default = (test, app, _errors, serviceName, idProp) => { | ||
describe('Basic Functionality', () => { | ||
let service; | ||
beforeEach(() => { | ||
service = app.service(serviceName); | ||
}); | ||
it('.id', () => { | ||
assert_1.default.strictEqual(service.id, idProp, 'id property is set to expected name'); | ||
}); | ||
test('.options', () => { | ||
assert_1.default.ok(service.options, 'Options are available in service.options'); | ||
}); | ||
test('.events', () => { | ||
assert_1.default.ok(service.events.includes('testing'), 'service.events is set and includes "testing"'); | ||
}); | ||
describe('Raw Methods', () => { | ||
test('._get', () => { | ||
assert_1.default.strictEqual(typeof service._get, 'function'); | ||
}); | ||
test('._find', () => { | ||
assert_1.default.strictEqual(typeof service._find, 'function'); | ||
}); | ||
test('._create', () => { | ||
assert_1.default.strictEqual(typeof service._create, 'function'); | ||
}); | ||
test('._update', () => { | ||
assert_1.default.strictEqual(typeof service._update, 'function'); | ||
}); | ||
test('._patch', () => { | ||
assert_1.default.strictEqual(typeof service._patch, 'function'); | ||
}); | ||
test('._remove', () => { | ||
assert_1.default.strictEqual(typeof service._remove, 'function'); | ||
}); | ||
}); | ||
}); | ||
it('.id', () => { | ||
assert.strictEqual(service.id, idProp, | ||
'id property is set to expected name' | ||
); | ||
}); | ||
test('.options', () => { | ||
assert.ok(service.options, 'Options are available in service.options'); | ||
}); | ||
test('.events', () => { | ||
assert.ok(service.events.includes('testing'), | ||
'service.events is set and includes "testing"' | ||
); | ||
}); | ||
describe('Raw Methods', () => { | ||
test('._get', () => { | ||
assert.strictEqual(typeof service._get, 'function'); | ||
}); | ||
test('._find', () => { | ||
assert.strictEqual(typeof service._find, 'function'); | ||
}); | ||
test('._create', () => { | ||
assert.strictEqual(typeof service._create, 'function'); | ||
}); | ||
test('._update', () => { | ||
assert.strictEqual(typeof service._update, 'function'); | ||
}); | ||
test('._patch', () => { | ||
assert.strictEqual(typeof service._patch, 'function'); | ||
}); | ||
test('._remove', () => { | ||
assert.strictEqual(typeof service._remove, 'function'); | ||
}); | ||
}); | ||
}); | ||
}; | ||
//# sourceMappingURL=basic.js.map |
@@ -0,47 +1,45 @@ | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
/* tslint:disable:no-console */ | ||
const basicTests = require('./basic'); | ||
const methodTests = require('./methods'); | ||
const syntaxTests = require('./syntax'); | ||
module.exports = testNames => { | ||
return (app, errors, serviceName, idProp = 'id') => { | ||
if (!serviceName) { | ||
throw new Error('You must pass a service name'); | ||
} | ||
const skippedTests = []; | ||
const allTests = []; | ||
const test = (name, runner) => { | ||
const skip = !testNames.includes(name); | ||
const its = skip ? it.skip : it; | ||
if (skip) { | ||
skippedTests.push(name); | ||
} | ||
allTests.push(name); | ||
its(name, runner); | ||
const basic_1 = __importDefault(require("./basic")); | ||
const methods_1 = __importDefault(require("./methods")); | ||
const syntax_1 = __importDefault(require("./syntax")); | ||
exports.default = (testNames) => { | ||
return (app, errors, serviceName, idProp = 'id') => { | ||
if (!serviceName) { | ||
throw new Error('You must pass a service name'); | ||
} | ||
const skippedTests = []; | ||
const allTests = []; | ||
const test = (name, runner) => { | ||
const skip = !testNames.includes(name); | ||
const its = skip ? it.skip : it; | ||
if (skip) { | ||
skippedTests.push(name); | ||
} | ||
allTests.push(name); | ||
its(name, runner); | ||
}; | ||
describe(`Adapter tests for '${serviceName}' service with '${idProp}' id property`, () => { | ||
after(() => { | ||
console.log('\n'); | ||
testNames.forEach(name => { | ||
if (!allTests.includes(name)) { | ||
console.error(`WARNING: '${name}' test is not part of the test suite`); | ||
} | ||
}); | ||
if (skippedTests.length) { | ||
console.log(`\nSkipped the following ${skippedTests.length} Feathers adapter test(s) out of ${allTests.length} total:`); | ||
console.log(JSON.stringify(skippedTests, null, ' ')); | ||
} | ||
}); | ||
basic_1.default(test, app, errors, serviceName, idProp); | ||
methods_1.default(test, app, errors, serviceName, idProp); | ||
syntax_1.default(test, app, errors, serviceName, idProp); | ||
}); | ||
}; | ||
describe(`Adapter tests for '${serviceName}' service with '${idProp}' id property`, () => { | ||
after(() => { | ||
console.log('\n'); | ||
testNames.forEach(name => { | ||
if (!allTests.includes(name)) { | ||
console.error(`WARNING: '${name}' test is not part of the test suite`); | ||
} | ||
}); | ||
if (skippedTests.length) { | ||
console.log(`\nSkipped the following ${skippedTests.length} Feathers adapter test(s) out of ${allTests.length} total:`); | ||
console.log(JSON.stringify(skippedTests, null, ' ')); | ||
} | ||
}); | ||
basicTests(test, app, errors, serviceName, idProp); | ||
methodTests(test, app, errors, serviceName, idProp); | ||
syntaxTests(test, app, errors, serviceName, idProp); | ||
}); | ||
}; | ||
}; | ||
//# sourceMappingURL=index.js.map |
@@ -1,538 +0,470 @@ | ||
const assert = require('assert'); | ||
module.exports = (test, app, errors, serviceName, idProp) => { | ||
describe(' Methods', () => { | ||
let doug; | ||
let service; | ||
beforeEach(async () => { | ||
service = app.service(serviceName); | ||
doug = await app.service(serviceName).create({ | ||
name: 'Doug', | ||
age: 32 | ||
}); | ||
}); | ||
afterEach(async () => { | ||
try { | ||
await app.service(serviceName).remove(doug[idProp]); | ||
} catch (error) {} | ||
}); | ||
describe('get', () => { | ||
test('.get', async () => { | ||
const data = await service.get(doug[idProp]); | ||
assert.strictEqual(data[idProp].toString(), doug[idProp].toString(), | ||
`${idProp} id matches` | ||
); | ||
assert.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert.strictEqual(data.age, 32, 'data.age matches'); | ||
}); | ||
test('.get + $select', async () => { | ||
const data = await service.get(doug[idProp], { | ||
query: { $select: [ 'name' ] } | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const assert_1 = __importDefault(require("assert")); | ||
exports.default = (test, app, _errors, serviceName, idProp) => { | ||
describe(' Methods', () => { | ||
let doug; | ||
let service; | ||
beforeEach(async () => { | ||
service = app.service(serviceName); | ||
doug = await app.service(serviceName).create({ | ||
name: 'Doug', | ||
age: 32 | ||
}); | ||
}); | ||
assert.strictEqual(data[idProp].toString(), doug[idProp].toString(), | ||
`${idProp} id property matches` | ||
); | ||
assert.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.get + id + query', async () => { | ||
try { | ||
await service.get(doug[idProp], { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.get + NotFound', async () => { | ||
try { | ||
await service.get('568225fbfe21222432e836ff'); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Error is a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.get + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
afterEach(async () => { | ||
try { | ||
await app.service(serviceName).remove(doug[idProp]); | ||
} | ||
catch (error) { } | ||
}); | ||
try { | ||
await service.get(doug[idProp], { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
describe('find', () => { | ||
test('.find', async () => { | ||
const data = await service.find(); | ||
assert.ok(Array.isArray(data), 'Data is an array'); | ||
assert.strictEqual(data.length, 1, 'Got one entry'); | ||
}); | ||
}); | ||
describe('remove', () => { | ||
test('.remove', async () => { | ||
const data = await service.remove(doug[idProp]); | ||
assert.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
}); | ||
test('.remove + $select', async () => { | ||
const data = await service.remove(doug[idProp], { | ||
query: { $select: [ 'name' ] } | ||
describe('get', () => { | ||
test('.get', async () => { | ||
const data = await service.get(doug[idProp]); | ||
assert_1.default.strictEqual(data[idProp].toString(), doug[idProp].toString(), `${idProp} id matches`); | ||
assert_1.default.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert_1.default.strictEqual(data.age, 32, 'data.age matches'); | ||
}); | ||
test('.get + $select', async () => { | ||
const data = await service.get(doug[idProp], { | ||
query: { $select: ['name'] } | ||
}); | ||
assert_1.default.strictEqual(data[idProp].toString(), doug[idProp].toString(), `${idProp} id property matches`); | ||
assert_1.default.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.get + id + query', async () => { | ||
try { | ||
await service.get(doug[idProp], { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.get + NotFound', async () => { | ||
try { | ||
await service.get('568225fbfe21222432e836ff'); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Error is a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.get + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
}); | ||
try { | ||
await service.get(doug[idProp], { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
assert.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.remove + id + query', async () => { | ||
try { | ||
await service.remove(doug[idProp], { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.remove + multi', async () => { | ||
try { | ||
await service.remove(null); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'MethodNotAllowed', | ||
'Removing multiple without option set throws MethodNotAllowed' | ||
); | ||
} | ||
service.options.multi = [ 'remove' ]; | ||
await service.create({ name: 'Dave', age: 29, created: true }); | ||
await service.create({ | ||
name: 'David', | ||
age: 3, | ||
created: true | ||
describe('find', () => { | ||
test('.find', async () => { | ||
const data = await service.find(); | ||
assert_1.default.ok(Array.isArray(data), 'Data is an array'); | ||
assert_1.default.strictEqual(data.length, 1, 'Got one entry'); | ||
}); | ||
}); | ||
const data = await service.remove(null, { | ||
query: { created: true } | ||
describe('remove', () => { | ||
test('.remove', async () => { | ||
const data = await service.remove(doug[idProp]); | ||
assert_1.default.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
}); | ||
test('.remove + $select', async () => { | ||
const data = await service.remove(doug[idProp], { | ||
query: { $select: ['name'] } | ||
}); | ||
assert_1.default.strictEqual(data.name, 'Doug', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.remove + id + query', async () => { | ||
try { | ||
await service.remove(doug[idProp], { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.remove + multi', async () => { | ||
try { | ||
await service.remove(null); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'MethodNotAllowed', 'Removing multiple without option set throws MethodNotAllowed'); | ||
} | ||
service.options.multi = ['remove']; | ||
await service.create({ name: 'Dave', age: 29, created: true }); | ||
await service.create({ | ||
name: 'David', | ||
age: 3, | ||
created: true | ||
}); | ||
const data = await service.remove(null, { | ||
query: { created: true } | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
const names = data.map((person) => person.name); | ||
assert_1.default.ok(names.includes('Dave'), 'Dave removed'); | ||
assert_1.default.ok(names.includes('David'), 'David removed'); | ||
}); | ||
test('.remove + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
}); | ||
try { | ||
await service.remove(doug[idProp], { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
let names = data.map(person => person.name); | ||
assert.ok(names.includes('Dave'), 'Dave removed'); | ||
assert.ok(names.includes('David'), 'David removed'); | ||
}); | ||
test('.remove + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
describe('update', () => { | ||
test('.update', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'Dougler' }; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.update(doug[idProp], originalData); | ||
assert_1.default.deepStrictEqual(originalData, originalCopy, 'data was not modified'); | ||
assert_1.default.strictEqual(data[idProp].toString(), doug[idProp].toString(), `${idProp} id matches`); | ||
assert_1.default.strictEqual(data.name, 'Dougler', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.update + $select', async () => { | ||
const originalData = { | ||
[idProp]: doug[idProp], | ||
name: 'Dougler', | ||
age: 10 | ||
}; | ||
const data = await service.update(doug[idProp], originalData, { | ||
query: { $select: ['name'] } | ||
}); | ||
assert_1.default.strictEqual(data.name, 'Dougler', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.update + id + query', async () => { | ||
try { | ||
await service.update(doug[idProp], { | ||
name: 'Dougler' | ||
}, { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.update + NotFound', async () => { | ||
try { | ||
await service.update('568225fbfe21222432e836ff', { name: 'NotFound' }); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Error is a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.update + query + NotFound', async () => { | ||
const dave = await service.create({ name: 'Dave' }); | ||
try { | ||
await service.update(dave[idProp], { name: 'UpdatedDave' }, { query: { name: 'NotDave' } }); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Error is a NotFound Feathers error'); | ||
} | ||
await service.remove(dave[idProp]); | ||
}); | ||
test('.update + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
}); | ||
try { | ||
await service.update(doug[idProp], { | ||
name: 'Dougler', | ||
age: 33 | ||
}, { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
try { | ||
await service.remove(doug[idProp], { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
describe('update', () => { | ||
test('.update', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'Dougler' }; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.update(doug[idProp], originalData); | ||
assert.deepStrictEqual(originalData, originalCopy, | ||
'data was not modified' | ||
); | ||
assert.strictEqual(data[idProp].toString(), doug[idProp].toString(), | ||
`${idProp} id matches` | ||
); | ||
assert.strictEqual(data.name, 'Dougler', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.update + $select', async () => { | ||
const originalData = { | ||
[idProp]: doug[idProp], | ||
name: 'Dougler', | ||
age: 10 | ||
}; | ||
const data = await service.update(doug[idProp], originalData, { | ||
query: { $select: [ 'name' ] } | ||
describe('patch', () => { | ||
test('.patch', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'PatchDoug' }; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.patch(doug[idProp], originalData); | ||
assert_1.default.deepStrictEqual(originalData, originalCopy, 'original data was not modified'); | ||
assert_1.default.strictEqual(data[idProp].toString(), doug[idProp].toString(), `${idProp} id matches`); | ||
assert_1.default.strictEqual(data.name, 'PatchDoug', 'data.name matches'); | ||
assert_1.default.strictEqual(data.age, 32, 'data.age matches'); | ||
}); | ||
test('.patch + $select', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'PatchDoug' }; | ||
const data = await service.patch(doug[idProp], originalData, { | ||
query: { $select: ['name'] } | ||
}); | ||
assert_1.default.strictEqual(data.name, 'PatchDoug', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.patch + id + query', async () => { | ||
try { | ||
await service.patch(doug[idProp], { | ||
name: 'id patched doug' | ||
}, { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.patch multiple', async () => { | ||
try { | ||
await service.patch(null, {}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'MethodNotAllowed', 'Removing multiple without option set throws MethodNotAllowed'); | ||
} | ||
const params = { | ||
query: { created: true } | ||
}; | ||
const dave = await service.create({ | ||
name: 'Dave', | ||
age: 29, | ||
created: true | ||
}); | ||
const david = await service.create({ | ||
name: 'David', | ||
age: 3, | ||
created: true | ||
}); | ||
service.options.multi = ['patch']; | ||
const data = await service.patch(null, { | ||
age: 2 | ||
}, params); | ||
assert_1.default.strictEqual(data.length, 2, 'returned two entries'); | ||
assert_1.default.strictEqual(data[0].age, 2, 'First entry age was updated'); | ||
assert_1.default.strictEqual(data[1].age, 2, 'Second entry age was updated'); | ||
await service.remove(dave[idProp]); | ||
await service.remove(david[idProp]); | ||
}); | ||
test('.patch multi query same', async () => { | ||
const service = app.service(serviceName); | ||
const params = { | ||
query: { age: { $lt: 10 } } | ||
}; | ||
const dave = await service.create({ | ||
name: 'Dave', | ||
age: 8, | ||
created: true | ||
}); | ||
const david = await service.create({ | ||
name: 'David', | ||
age: 4, | ||
created: true | ||
}); | ||
const data = await service.patch(null, { | ||
age: 2 | ||
}, params); | ||
assert_1.default.strictEqual(data.length, 2, 'returned two entries'); | ||
assert_1.default.strictEqual(data[0].age, 2, 'First entry age was updated'); | ||
assert_1.default.strictEqual(data[1].age, 2, 'Second entry age was updated'); | ||
await service.remove(dave[idProp]); | ||
await service.remove(david[idProp]); | ||
}); | ||
test('.patch multi query changed', async () => { | ||
const service = app.service(serviceName); | ||
const params = { | ||
query: { age: 10 } | ||
}; | ||
const dave = await service.create({ | ||
name: 'Dave', | ||
age: 10, | ||
created: true | ||
}); | ||
const david = await service.create({ | ||
name: 'David', | ||
age: 10, | ||
created: true | ||
}); | ||
const data = await service.patch(null, { | ||
age: 2 | ||
}, params); | ||
assert_1.default.strictEqual(data.length, 2, 'returned two entries'); | ||
assert_1.default.strictEqual(data[0].age, 2, 'First entry age was updated'); | ||
assert_1.default.strictEqual(data[1].age, 2, 'Second entry age was updated'); | ||
await service.remove(dave[idProp]); | ||
await service.remove(david[idProp]); | ||
}); | ||
test('.patch + NotFound', async () => { | ||
try { | ||
await service.patch('568225fbfe21222432e836ff', { name: 'PatchDoug' }); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Error is a NotFound Feathers error'); | ||
} | ||
}); | ||
test('.patch + query + NotFound', async () => { | ||
const dave = await service.create({ name: 'Dave' }); | ||
try { | ||
await service.patch(dave[idProp], { name: 'PatchedDave' }, { query: { name: 'NotDave' } }); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Error is a NotFound Feathers error'); | ||
} | ||
await service.remove(dave[idProp]); | ||
}); | ||
test('.patch + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
}); | ||
try { | ||
await service.patch(doug[idProp], { | ||
age: 33 | ||
}, { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'NotFound', 'Got a NotFound Feathers error'); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
assert.strictEqual(data.name, 'Dougler', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.update + id + query', async () => { | ||
try { | ||
await service.update(doug[idProp], { | ||
name: 'Dougler' | ||
}, { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.update + NotFound', async () => { | ||
try { | ||
await service.update('568225fbfe21222432e836ff', { name: 'NotFound' }); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Error is a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.update + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
describe('create', () => { | ||
test('.create', async () => { | ||
const originalData = { | ||
name: 'Bill', | ||
age: 40 | ||
}; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.create(originalData); | ||
assert_1.default.deepStrictEqual(originalData, originalCopy, 'original data was not modified'); | ||
assert_1.default.ok(data instanceof Object, 'data is an object'); | ||
assert_1.default.strictEqual(data.name, 'Bill', 'data.name matches'); | ||
await service.remove(data[idProp]); | ||
}); | ||
test('.create + $select', async () => { | ||
const originalData = { | ||
name: 'William', | ||
age: 23 | ||
}; | ||
const data = await service.create(originalData, { | ||
query: { $select: ['name'] } | ||
}); | ||
assert_1.default.strictEqual(data.name, 'William', 'data.name matches'); | ||
assert_1.default.ok(!data.age, 'data.age is falsy'); | ||
await service.remove(data[idProp]); | ||
}); | ||
test('.create multi', async () => { | ||
try { | ||
await service.create([], {}); | ||
throw new Error('Should never get here'); | ||
} | ||
catch (error) { | ||
assert_1.default.strictEqual(error.name, 'MethodNotAllowed', 'Removing multiple without option set throws MethodNotAllowed'); | ||
} | ||
const items = [ | ||
{ | ||
name: 'Gerald', | ||
age: 18 | ||
}, | ||
{ | ||
name: 'Herald', | ||
age: 18 | ||
} | ||
]; | ||
service.options.multi = ['create', 'patch']; | ||
const data = await service.create(items); | ||
assert_1.default.ok(Array.isArray(data), 'data is an array'); | ||
assert_1.default.ok(typeof data[0][idProp] !== 'undefined', 'id is set'); | ||
assert_1.default.strictEqual(data[0].name, 'Gerald', 'first name matches'); | ||
assert_1.default.ok(typeof data[1][idProp] !== 'undefined', 'id is set'); | ||
assert_1.default.strictEqual(data[1].name, 'Herald', 'second name macthes'); | ||
await service.remove(data[0][idProp]); | ||
await service.remove(data[1][idProp]); | ||
}); | ||
}); | ||
try { | ||
await service.update(doug[idProp], { | ||
name: 'Dougler', | ||
age: 33 | ||
}, { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
describe('patch', () => { | ||
test('.patch', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'PatchDoug' }; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.patch(doug[idProp], originalData); | ||
assert.deepStrictEqual(originalData, originalCopy, | ||
'original data was not modified' | ||
); | ||
assert.strictEqual(data[idProp].toString(), doug[idProp].toString(), | ||
`${idProp} id matches` | ||
); | ||
assert.strictEqual(data.name, 'PatchDoug', 'data.name matches'); | ||
assert.strictEqual(data.age, 32, 'data.age matches'); | ||
}); | ||
test('.patch + $select', async () => { | ||
const originalData = { [idProp]: doug[idProp], name: 'PatchDoug' }; | ||
const data = await service.patch(doug[idProp], originalData, { | ||
query: { $select: [ 'name' ] } | ||
describe('doesn\'t call public methods internally', () => { | ||
let throwing; | ||
before(() => { | ||
throwing = app.service(serviceName).extend({ | ||
get store() { | ||
return app.service(serviceName).store; | ||
}, | ||
find() { | ||
throw new Error('find method called'); | ||
}, | ||
get() { | ||
throw new Error('get method called'); | ||
}, | ||
create() { | ||
throw new Error('create method called'); | ||
}, | ||
update() { | ||
throw new Error('update method called'); | ||
}, | ||
patch() { | ||
throw new Error('patch method called'); | ||
}, | ||
remove() { | ||
throw new Error('remove method called'); | ||
} | ||
}); | ||
}); | ||
test('internal .find', () => app.service(serviceName).find.call(throwing)); | ||
test('internal .get', () => service.get.call(throwing, doug[idProp])); | ||
test('internal .create', async () => { | ||
const bob = await service.create.call(throwing, { | ||
name: 'Bob', | ||
age: 25 | ||
}); | ||
await service.remove(bob[idProp]); | ||
}); | ||
test('internal .update', () => service.update.call(throwing, doug[idProp], { | ||
name: 'Dougler' | ||
})); | ||
test('internal .patch', () => service.patch.call(throwing, doug[idProp], { | ||
name: 'PatchDoug' | ||
})); | ||
test('internal .remove', () => service.remove.call(throwing, doug[idProp])); | ||
}); | ||
assert.strictEqual(data.name, 'PatchDoug', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
}); | ||
test('.patch + id + query', async () => { | ||
try { | ||
await service.patch(doug[idProp], { | ||
name: 'id patched doug' | ||
}, { | ||
query: { name: 'Tester' } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.patch multiple', async () => { | ||
try { | ||
await service.patch(null, {}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'MethodNotAllowed', | ||
'Removing multiple without option set throws MethodNotAllowed' | ||
); | ||
} | ||
const params = { | ||
query: { created: true } | ||
}; | ||
const dave = await service.create({ | ||
name: 'Dave', | ||
age: 29, | ||
created: true | ||
}); | ||
const david = await service.create({ | ||
name: 'David', | ||
age: 3, | ||
created: true | ||
}); | ||
service.options.multi = [ 'patch' ]; | ||
const data = await service.patch(null, { | ||
age: 2 | ||
}, params); | ||
assert.strictEqual(data.length, 2, 'returned two entries'); | ||
assert.strictEqual(data[0].age, 2, 'First entry age was updated'); | ||
assert.strictEqual(data[1].age, 2, 'Sceond entry age was updated'); | ||
await service.remove(dave[idProp], params); | ||
await service.remove(david[idProp], params); | ||
}); | ||
test('.patch multi query', async () => { | ||
const service = app.service(serviceName); | ||
const params = { | ||
query: { age: { $lt: 10 } } | ||
}; | ||
const dave = await service.create({ | ||
name: 'Dave', | ||
age: 8, | ||
created: true | ||
}); | ||
const david = await service.create({ | ||
name: 'David', | ||
age: 4, | ||
created: true | ||
}); | ||
const data = await service.patch(null, { | ||
age: 2 | ||
}, params); | ||
assert.strictEqual(data.length, 2, 'returned two entries'); | ||
assert.strictEqual(data[0].age, 2, 'First entry age was updated'); | ||
assert.strictEqual(data[1].age, 2, 'Sceond entry age was updated'); | ||
await service.remove(dave[idProp], params); | ||
await service.remove(david[idProp], params); | ||
}); | ||
test('.patch + NotFound', async () => { | ||
try { | ||
await service.patch('568225fbfe21222432e836ff', { name: 'PatchDoug' }); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Error is a NotFound Feathers error' | ||
); | ||
} | ||
}); | ||
test('.patch + id + query id', async () => { | ||
const alice = await service.create({ | ||
name: 'Alice', | ||
age: 12 | ||
}); | ||
try { | ||
await service.patch(doug[idProp], { | ||
age: 33 | ||
}, { | ||
query: { [idProp]: alice[idProp] } | ||
}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'NotFound', | ||
'Got a NotFound Feathers error' | ||
); | ||
} | ||
await service.remove(alice[idProp]); | ||
}); | ||
}); | ||
describe('create', () => { | ||
test('.create', async () => { | ||
const originalData = { | ||
name: 'Bill', | ||
age: 40 | ||
}; | ||
const originalCopy = Object.assign({}, originalData); | ||
const data = await service.create(originalData); | ||
assert.deepStrictEqual(originalData, originalCopy, | ||
'original data was not modified' | ||
); | ||
assert.ok(data instanceof Object, 'data is an object'); | ||
assert.strictEqual(data.name, 'Bill', 'data.name matches'); | ||
await service.remove(data[idProp]); | ||
}); | ||
test('.create + $select', async () => { | ||
const originalData = { | ||
name: 'William', | ||
age: 23 | ||
}; | ||
const data = await service.create(originalData, { | ||
query: { $select: [ 'name' ] } | ||
}); | ||
assert.strictEqual(data.name, 'William', 'data.name matches'); | ||
assert.ok(!data.age, 'data.age is falsy'); | ||
await service.remove(data[idProp]); | ||
}); | ||
test('.create multi', async () => { | ||
try { | ||
await service.create([], {}); | ||
throw new Error('Should never get here'); | ||
} catch (error) { | ||
assert.strictEqual(error.name, 'MethodNotAllowed', | ||
'Removing multiple without option set throws MethodNotAllowed' | ||
); | ||
} | ||
const items = [ | ||
{ | ||
name: 'Gerald', | ||
age: 18 | ||
}, | ||
{ | ||
name: 'Herald', | ||
age: 18 | ||
} | ||
]; | ||
service.options.multi = [ 'create', 'patch' ]; | ||
const data = await service.create(items); | ||
assert.ok(Array.isArray(data), 'data is an array'); | ||
assert.ok(typeof data[0][idProp] !== 'undefined', 'id is set'); | ||
assert.strictEqual(data[0].name, 'Gerald', 'first name matches'); | ||
assert.ok(typeof data[1][idProp] !== 'undefined', 'id is set'); | ||
assert.strictEqual(data[1].name, 'Herald', 'second name macthes'); | ||
await service.remove(data[0][idProp]); | ||
await service.remove(data[1][idProp]); | ||
}); | ||
}); | ||
describe('doesn\'t call public methods internally', () => { | ||
let throwing; | ||
before(() => { | ||
throwing = app.service(serviceName).extend({ | ||
get store () { | ||
return app.service(serviceName).store; | ||
}, | ||
find () { | ||
throw new Error('find method called'); | ||
}, | ||
get () { | ||
throw new Error('get method called'); | ||
}, | ||
create () { | ||
throw new Error('create method called'); | ||
}, | ||
update () { | ||
throw new Error('update method called'); | ||
}, | ||
patch () { | ||
throw new Error('patch method called'); | ||
}, | ||
remove () { | ||
throw new Error('remove method called'); | ||
} | ||
}); | ||
}); | ||
test('internal .find', () => app.service(serviceName).find.call(throwing)); | ||
test('internal .get', () => | ||
service.get.call(throwing, doug[idProp]) | ||
); | ||
test('internal .create', async () => { | ||
const bob = await service.create.call(throwing, { | ||
name: 'Bob', | ||
age: 25 | ||
}); | ||
await service.remove(bob[idProp]); | ||
}); | ||
test('internal .update', () => | ||
service.update.call(throwing, doug[idProp], { | ||
name: 'Dougler' | ||
}) | ||
); | ||
test('internal .patch', () => | ||
service.patch.call(throwing, doug[idProp], { | ||
name: 'PatchDoug' | ||
}) | ||
); | ||
test('internal .remove', () => | ||
service.remove.call(throwing, doug[idProp]) | ||
); | ||
}); | ||
}); | ||
}; | ||
//# sourceMappingURL=methods.js.map |
@@ -1,342 +0,292 @@ | ||
const assert = require('assert'); | ||
module.exports = (test, app, errors, serviceName, idProp) => { | ||
describe('Query Syntax', () => { | ||
let bob; | ||
let alice; | ||
let doug; | ||
let service; | ||
beforeEach(async () => { | ||
service = app.service(serviceName); | ||
bob = await app.service(serviceName).create({ | ||
name: 'Bob', | ||
age: 25 | ||
}); | ||
doug = await app.service(serviceName).create({ | ||
name: 'Doug', | ||
age: 32 | ||
}); | ||
alice = await app.service(serviceName).create({ | ||
name: 'Alice', | ||
age: 19 | ||
}); | ||
}); | ||
afterEach(async () => { | ||
await service.remove(bob[idProp]); | ||
await service.remove(alice[idProp]); | ||
await service.remove(doug[idProp]); | ||
}); | ||
test('.find + equal', async () => { | ||
const params = { query: { name: 'Alice' } }; | ||
const data = await service.find(params); | ||
assert.ok(Array.isArray(data)); | ||
assert.strictEqual(data.length, 1); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
}); | ||
test('.find + equal multiple', async () => { | ||
const data = await service.find({ | ||
query: { name: 'Alice', age: 20 } | ||
}); | ||
assert.strictEqual(data.length, 0); | ||
}); | ||
describe('special filters', () => { | ||
test('.find + $sort', async () => { | ||
let data = await service.find({ | ||
query: { | ||
$sort: { name: 1 } | ||
} | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const assert_1 = __importDefault(require("assert")); | ||
exports.default = (test, app, _errors, serviceName, idProp) => { | ||
describe('Query Syntax', () => { | ||
let bob; | ||
let alice; | ||
let doug; | ||
let service; | ||
beforeEach(async () => { | ||
service = app.service(serviceName); | ||
bob = await app.service(serviceName).create({ | ||
name: 'Bob', | ||
age: 25 | ||
}); | ||
doug = await app.service(serviceName).create({ | ||
name: 'Doug', | ||
age: 32 | ||
}); | ||
alice = await app.service(serviceName).create({ | ||
name: 'Alice', | ||
age: 19 | ||
}); | ||
}); | ||
assert.strictEqual(data.length, 3); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
assert.strictEqual(data[2].name, 'Doug'); | ||
data = await service.find({ | ||
query: { | ||
$sort: { name: -1 } | ||
} | ||
afterEach(async () => { | ||
await service.remove(bob[idProp]); | ||
await service.remove(alice[idProp]); | ||
await service.remove(doug[idProp]); | ||
}); | ||
assert.strictEqual(data.length, 3); | ||
assert.strictEqual(data[0].name, 'Doug'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
assert.strictEqual(data[2].name, 'Alice'); | ||
}); | ||
test('.find + $sort + string', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$sort: { name: '1' } | ||
} | ||
test('.find + equal', async () => { | ||
const params = { query: { name: 'Alice' } }; | ||
const data = await service.find(params); | ||
assert_1.default.ok(Array.isArray(data)); | ||
assert_1.default.strictEqual(data.length, 1); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
}); | ||
assert.strictEqual(data.length, 3); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
assert.strictEqual(data[2].name, 'Doug'); | ||
}); | ||
test('.find + $limit', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$limit: 2 | ||
} | ||
test('.find + equal multiple', async () => { | ||
const data = await service.find({ | ||
query: { name: 'Alice', age: 20 } | ||
}); | ||
assert_1.default.strictEqual(data.length, 0); | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $limit 0', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$limit: 0 | ||
} | ||
describe('special filters', () => { | ||
test('.find + $sort', async () => { | ||
let data = await service.find({ | ||
query: { | ||
$sort: { name: 1 } | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 3); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
assert_1.default.strictEqual(data[2].name, 'Doug'); | ||
data = await service.find({ | ||
query: { | ||
$sort: { name: -1 } | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 3); | ||
assert_1.default.strictEqual(data[0].name, 'Doug'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
assert_1.default.strictEqual(data[2].name, 'Alice'); | ||
}); | ||
test('.find + $sort + string', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$sort: { name: '1' } | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 3); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
assert_1.default.strictEqual(data[2].name, 'Doug'); | ||
}); | ||
test('.find + $limit', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$limit: 2 | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $limit 0', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$limit: 0 | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 0); | ||
}); | ||
test('.find + $skip', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$sort: { name: 1 }, | ||
$skip: 1 | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
assert_1.default.strictEqual(data[0].name, 'Bob'); | ||
assert_1.default.strictEqual(data[1].name, 'Doug'); | ||
}); | ||
test('.find + $select', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: 'Alice', | ||
$select: ['name'] | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 1); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[0].age, undefined); | ||
}); | ||
test('.find + $or', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$or: [ | ||
{ name: 'Alice' }, | ||
{ name: 'Bob' } | ||
], | ||
$sort: { name: 1 } | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
test('.find + $in', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: { | ||
$in: ['Alice', 'Bob'] | ||
}, | ||
$sort: { name: 1 } | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
test('.find + $nin', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: { | ||
$nin: ['Alice', 'Bob'] | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 1); | ||
assert_1.default.strictEqual(data[0].name, 'Doug'); | ||
}); | ||
test('.find + $lt', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$lt: 30 | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $lte', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$lte: 25 | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $gt', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$gt: 30 | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 1); | ||
}); | ||
test('.find + $gte', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$gte: 25 | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $ne', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$ne: 25 | ||
} | ||
} | ||
}); | ||
assert_1.default.strictEqual(data.length, 2); | ||
}); | ||
}); | ||
assert.strictEqual(data.length, 0); | ||
}); | ||
test('.find + $skip', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$sort: { name: 1 }, | ||
$skip: 1 | ||
} | ||
test('.find + $gt + $lt + $sort', async () => { | ||
const params = { | ||
query: { | ||
age: { | ||
$gt: 18, | ||
$lt: 30 | ||
}, | ||
$sort: { name: 1 } | ||
} | ||
}; | ||
const data = await service.find(params); | ||
assert_1.default.strictEqual(data.length, 2); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
assert.strictEqual(data[0].name, 'Bob'); | ||
assert.strictEqual(data[1].name, 'Doug'); | ||
}); | ||
test('.find + $select', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: 'Alice', | ||
$select: ['name'] | ||
} | ||
test('.find + $or nested + $sort', async () => { | ||
const params = { | ||
query: { | ||
$or: [ | ||
{ name: 'Doug' }, | ||
{ | ||
age: { | ||
$gte: 18, | ||
$lt: 25 | ||
} | ||
} | ||
], | ||
$sort: { name: 1 } | ||
} | ||
}; | ||
const data = await service.find(params); | ||
assert_1.default.strictEqual(data.length, 2); | ||
assert_1.default.strictEqual(data[0].name, 'Alice'); | ||
assert_1.default.strictEqual(data[1].name, 'Doug'); | ||
}); | ||
assert.strictEqual(data.length, 1); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[0].age, undefined); | ||
}); | ||
test('.find + $or', async () => { | ||
const data = await service.find({ | ||
query: { | ||
$or: [ | ||
{ name: 'Alice' }, | ||
{ name: 'Bob' } | ||
], | ||
$sort: { name: 1 } | ||
} | ||
describe('paginate', function () { | ||
beforeEach(() => { | ||
service.options.paginate = { | ||
default: 1, | ||
max: 2 | ||
}; | ||
}); | ||
afterEach(() => { | ||
service.options.paginate = {}; | ||
}); | ||
test('.find + paginate', async () => { | ||
const page = await service.find({ | ||
query: { $sort: { name: -1 } } | ||
}); | ||
assert_1.default.strictEqual(page.total, 3); | ||
assert_1.default.strictEqual(page.limit, 1); | ||
assert_1.default.strictEqual(page.skip, 0); | ||
assert_1.default.strictEqual(page.data[0].name, 'Doug'); | ||
}); | ||
test('.find + paginate + $limit + $skip', async () => { | ||
const params = { | ||
query: { | ||
$skip: 1, | ||
$limit: 4, | ||
$sort: { name: -1 } | ||
} | ||
}; | ||
const page = await service.find(params); | ||
assert_1.default.strictEqual(page.total, 3); | ||
assert_1.default.strictEqual(page.limit, 2); | ||
assert_1.default.strictEqual(page.skip, 1); | ||
assert_1.default.strictEqual(page.data[0].name, 'Bob'); | ||
assert_1.default.strictEqual(page.data[1].name, 'Alice'); | ||
}); | ||
test('.find + paginate + $limit 0', async () => { | ||
const page = await service.find({ | ||
query: { $limit: 0 } | ||
}); | ||
assert_1.default.strictEqual(page.total, 3); | ||
assert_1.default.strictEqual(page.data.length, 0); | ||
}); | ||
test('.find + paginate + params', async () => { | ||
const page = await service.find({ paginate: { default: 3 } }); | ||
assert_1.default.strictEqual(page.limit, 3); | ||
assert_1.default.strictEqual(page.skip, 0); | ||
const results = await service.find({ paginate: false }); | ||
assert_1.default.ok(Array.isArray(results)); | ||
assert_1.default.strictEqual(results.length, 3); | ||
}); | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
test('.find + $in', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: { | ||
$in: ['Alice', 'Bob'] | ||
}, | ||
$sort: { name: 1 } | ||
} | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
test('.find + $nin', async () => { | ||
const data = await service.find({ | ||
query: { | ||
name: { | ||
$nin: [ 'Alice', 'Bob' ] | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 1); | ||
assert.strictEqual(data[0].name, 'Doug'); | ||
}); | ||
test('.find + $lt', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$lt: 30 | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $lte', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$lte: 25 | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $gt', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$gt: 30 | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 1); | ||
}); | ||
test('.find + $gte', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$gte: 25 | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
}); | ||
test('.find + $ne', async () => { | ||
const data = await service.find({ | ||
query: { | ||
age: { | ||
$ne: 25 | ||
} | ||
} | ||
}); | ||
assert.strictEqual(data.length, 2); | ||
}); | ||
}); | ||
test('.find + $gt + $lt + $sort', async () => { | ||
const params = { | ||
query: { | ||
age: { | ||
$gt: 18, | ||
$lt: 30 | ||
}, | ||
$sort: { name: 1 } | ||
} | ||
}; | ||
const data = await service.find(params); | ||
assert.strictEqual(data.length, 2); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Bob'); | ||
}); | ||
test('.find + $or nested + $sort', async () => { | ||
const params = { | ||
query: { | ||
$or: [ | ||
{ name: 'Doug' }, | ||
{ | ||
age: { | ||
$gte: 18, | ||
$lt: 25 | ||
} | ||
} | ||
], | ||
$sort: { name: 1 } | ||
} | ||
}; | ||
const data = await service.find(params); | ||
assert.strictEqual(data.length, 2); | ||
assert.strictEqual(data[0].name, 'Alice'); | ||
assert.strictEqual(data[1].name, 'Doug'); | ||
}); | ||
describe('paginate', function () { | ||
beforeEach(() => { | ||
service.options.paginate = { | ||
default: 1, | ||
max: 2 | ||
}; | ||
}); | ||
afterEach(() => { | ||
service.options.paginate = {}; | ||
}); | ||
test('.find + paginate', async () => { | ||
const page = await service.find({ | ||
query: { $sort: { name: -1 } } | ||
}); | ||
assert.strictEqual(page.total, 3); | ||
assert.strictEqual(page.limit, 1); | ||
assert.strictEqual(page.skip, 0); | ||
assert.strictEqual(page.data[0].name, 'Doug'); | ||
}); | ||
test('.find + paginate + $limit + $skip', async () => { | ||
const params = { | ||
query: { | ||
$skip: 1, | ||
$limit: 4, | ||
$sort: { name: -1 } | ||
} | ||
}; | ||
const page = await service.find(params); | ||
assert.strictEqual(page.total, 3); | ||
assert.strictEqual(page.limit, 2); | ||
assert.strictEqual(page.skip, 1); | ||
assert.strictEqual(page.data[0].name, 'Bob'); | ||
assert.strictEqual(page.data[1].name, 'Alice'); | ||
}); | ||
test('.find + paginate + $limit 0', async () => { | ||
const page = await service.find({ | ||
query: { $limit: 0 } | ||
}); | ||
assert.strictEqual(page.total, 3); | ||
assert.strictEqual(page.data.length, 0); | ||
}); | ||
test('.find + paginate + params', async () => { | ||
const page = await service.find({ paginate: { default: 3 } }); | ||
assert.strictEqual(page.limit, 3); | ||
assert.strictEqual(page.skip, 0); | ||
const results = await service.find({ paginate: false }); | ||
assert.ok(Array.isArray(results)); | ||
assert.strictEqual(results.length, 3); | ||
}); | ||
}); | ||
}); | ||
}; | ||
//# sourceMappingURL=syntax.js.map |
{ | ||
"name": "@feathersjs/adapter-tests", | ||
"version": "4.5.2", | ||
"version": "4.5.3", | ||
"description": "Feathers shared database adapter test suite", | ||
@@ -16,3 +16,3 @@ "homepage": "https://feathersjs.com", | ||
"type": "git", | ||
"url": "git://github.com/feathersjs/feathers.git" | ||
"url": "git://github.com/feathersjs/databases.git" | ||
}, | ||
@@ -26,3 +26,3 @@ "author": { | ||
"bugs": { | ||
"url": "https://github.com/feathersjs/feathers/issues" | ||
"url": "https://github.com/feathersjs/databases/issues" | ||
}, | ||
@@ -34,3 +34,5 @@ "engines": { | ||
"scripts": { | ||
"test": "mocha --config ../../.mocharc.json" | ||
"prepublish": "npm run compile", | ||
"compile": "shx rm -rf lib/ && tsc", | ||
"test": "mocha --config ../../.mocharc.json --recursive test/**.test.ts test/**/*.test.ts" | ||
}, | ||
@@ -44,8 +46,9 @@ "directories": { | ||
"devDependencies": { | ||
"@feathersjs/errors": "^4.5.2", | ||
"@feathersjs/feathers": "^4.5.2", | ||
"feathers-memory": "^4.1.0", | ||
"mocha": "^7.0.1" | ||
"@types/node": "^14.11.2", | ||
"mocha": "^8.1.3", | ||
"shx": "^0.3.2", | ||
"ts-node": "^9.0.0", | ||
"typescript": "^4.0.3" | ||
}, | ||
"gitHead": "9d5871e98d821384dee70b8d3d9af4002f3d052a" | ||
"gitHead": "e5e48e3acce6dda9edc3d0ca29fb367aafb7e7fa" | ||
} |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
107399
21
1740
5
1
1