mongoose-delete-ts
Version:
Mongoose soft delete plugin
58 lines (48 loc) • 1.94 kB
text/typescript
import { Model } from 'mongoose';
import { Deleted, DeletedMethods, DeletedQueryHelpers, DeletedStaticMethods } from '../source';
import { describe } from 'mocha';
import setupModel from './utils/setupModel';
import dropModel from './utils/dropModel';
import { expect } from 'chai';
type Test = { name: string } & Deleted;
type TestQueryHelpers = DeletedQueryHelpers<Test>;
type TestModel = Model<Test, TestQueryHelpers, DeletedMethods> & DeletedStaticMethods<Test, TestQueryHelpers>;
describe('new model', function() {
let TestModel: TestModel;
before(async function() {
TestModel = setupModel<Test, TestModel>('TestNewModel', { name: String });
});
after(async function() {
await dropModel('TestNewModel');
});
describe('new model', function() {
it('create() -> set deleted=false', async function() {
const puffy = await TestModel.create({ name: 'Puffy1' });
expect(puffy.deleted).to.equal(false);
});
it('save() -> set deleted=false', async function() {
const puffy = new TestModel({ name: 'Puffy2' });
const success = await puffy.save();
expect(success.deleted).to.equal(false);
});
it('insertMany() -> set deleted=false', async function() {
const [puffy3, puffy4] = await TestModel.insertMany([{ name: 'Puffy3' }, { name: 'Puffy4' }]);
expect(puffy3.deleted).to.equal(false);
expect(puffy4.deleted).to.equal(false);
});
it('updateOne()-> with upsert set deleted=false', async function() {
await TestModel.updateOne({ name: 'Puffy5' }, { name: 'Puffy6' }, { upsert: true });
const puffy = await TestModel.findOne({ name: 'Puffy6' }).orFail();
expect(puffy.deleted).to.equal(false);
});
it('bulkWrite() -> set deleted=false', async function() {
await TestModel.bulkWrite([{
insertOne: {
document: { name: 'Puffy7' }
}
}]);
const puffy = await TestModel.findOne({ name: 'Puffy7' }).orFail();
expect(puffy.deleted).to.equal(false);
});
});
});