UNPKG

mongoose-smart-delete

Version:

A Mongoose plugin for implementing soft delete functionality, allowing documents to be marked as deleted without being removed from the database.

52 lines (42 loc) 2.17 kB
const createModel = require('./setup/createModel') const modes = require('./setup/modes') modes.forEach((mode) => { describe(`SoftDelete - deleteOne (mode: ${mode})`, () => { let Model, Document beforeAll(async () => { Model = createModel({name: String}, {mode: mode}) }) beforeEach(async () => { Document = await Model.create({name: 'TestDocument'}) }) afterEach(async () => { await Model.deleteMany({}, {softDelete: false, withDeleted: true}) }) it('Document.deleteOne should not remove document from collection when option softDelete is set to true', async () => { await Document.deleteOne({softDelete: true}) expect(await Model.findOne({})).toBeNull() expect(await Model.findOne({}, null, {withDeleted: true})).not.toBeNull() }) it('Document.deleteOne should remove document from collection when option softDelete is set to false', async () => { await Document.deleteOne({softDelete: false}) expect(await Model.findOne({}, null, {withDeleted: true})).toBeNull() }) it('Model.deleteOne should not remove document from collection when option softDelete is set to true', async () => { await Model.deleteOne({_id: Document._id}, {softDelete: true}) expect(await Model.findOne({})).toBeNull() expect(await Model.findOne({}, null, {withDeleted: true})).not.toBeNull() }) it('Model.deleteOne should remove document from collection when option softDelete is set to false', async () => { await Model.deleteOne({_id: Document._id}, {softDelete: false}) expect(await Model.findOne({}, null, {withDeleted: true})).toBeNull() }) it('Document.deleteOne should return {acknowledged: true, deletedCount: 1}', async () => { const result = await Document.deleteOne({softDelete: true}) expect(result).toEqual({acknowledged: true, deletedCount: 1}) }) it('Model.deleteOne should return {acknowledged: true, deletedCount: 1}', async () => { const result = await Model.deleteOne({_id: Document._id}, {softDelete: true}) expect(result).toEqual({acknowledged: true, deletedCount: 1}) }) }) })