Socket
Socket
Sign inDemoInstall

@feathersjs/adapter-tests

Package Overview
Dependencies
Maintainers
4
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@feathersjs/adapter-tests - npm Package Compare versions

Comparing version 4.5.2 to 4.5.3

lib/basic.d.ts

11

CHANGELOG.md

@@ -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 @@

93

lib/basic.js

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc