@e22m4u/js-repository
Version:
Реализация репозитория для работы с базами данных в Node.js
86 lines (72 loc) • 2.73 kB
JavaScript
import {expect} from 'chai';
import {chai} from '../../chai.js';
import {Adapter} from '../adapter.js';
import {DatabaseSchema} from '../../database-schema.js';
import {ModelDataSanitizer} from '../../definition/index.js';
const dbs = new DatabaseSchema();
dbs.defineModel({name: 'model'});
class TestAdapter extends Adapter {
// eslint-disable-next-line no-unused-vars
create(modelName, modelData, filter = undefined) {
return Promise.resolve({});
}
// eslint-disable-next-line no-unused-vars
replaceById(modelName, id, modelData, filter = undefined) {
return Promise.resolve({});
}
// eslint-disable-next-line no-unused-vars
replaceOrCreate(modelName, modelData, filter = undefined) {
return Promise.resolve({});
}
// eslint-disable-next-line no-unused-vars
patch(modelName, modelData, where = undefined) {
return Promise.resolve(1);
}
// eslint-disable-next-line no-unused-vars
patchById(modelName, id, modelData, filter = undefined) {
return Promise.resolve({});
}
}
const A = dbs.getService(TestAdapter);
const V = dbs.getService(ModelDataSanitizer);
const sandbox = chai.spy.sandbox();
describe('DataSanitizingDecorator', function () {
afterEach(function () {
sandbox.restore();
});
it('overrides the "create" method and sanitizes a given data', async function () {
sandbox.on(V, 'sanitize');
const data = {};
await A.create('model', data);
expect(V.sanitize).to.be.called.once;
expect(V.sanitize).to.be.called.with.exactly('model', data);
});
it('overrides the "replaceById" method and sanitizes a given data', async function () {
sandbox.on(V, 'sanitize');
const data = {};
await A.replaceById('model', 1, data);
expect(V.sanitize).to.be.called.once;
expect(V.sanitize).to.be.called.with.exactly('model', data);
});
it('overrides the "replaceOrCreate" method and sanitizes a given data', async function () {
sandbox.on(V, 'sanitize');
const data = {};
await A.replaceOrCreate('model', data);
expect(V.sanitize).to.be.called.once;
expect(V.sanitize).to.be.called.with.exactly('model', data);
});
it('overrides the "patch" method and sanitizes a given data', async function () {
sandbox.on(V, 'sanitize');
const data = {};
await A.patch('model', data);
expect(V.sanitize).to.be.called.once;
expect(V.sanitize).to.be.called.with.exactly('model', data);
});
it('overrides the "patchById" method and sanitizes a given data', async function () {
sandbox.on(V, 'sanitize');
const data = {};
await A.patchById('model', 1, data);
expect(V.sanitize).to.be.called.once;
expect(V.sanitize).to.be.called.with.exactly('model', data);
});
});