ts-patch-mongoose 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +8 -3
- package/dist/cjs/patch.js +88 -0
- package/dist/cjs/patch.js.map +1 -0
- package/dist/cjs/plugin.js +71 -149
- package/dist/cjs/plugin.js.map +1 -1
- package/dist/cjs/types/interfaces/IPluginOptions.d.ts +1 -1
- package/dist/cjs/types/interfaces/IPluginOptions.d.ts.map +1 -1
- package/dist/cjs/types/patch.d.ts +12 -0
- package/dist/cjs/types/patch.d.ts.map +1 -0
- package/dist/cjs/types/plugin.d.ts.map +1 -1
- package/dist/esm/patch.js +79 -0
- package/dist/esm/patch.js.map +1 -0
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/plugin.mjs +68 -146
- package/dist/esm/types/interfaces/IPluginOptions.d.ts +1 -1
- package/dist/esm/types/interfaces/IPluginOptions.d.ts.map +1 -1
- package/dist/esm/types/patch.d.ts +12 -0
- package/dist/esm/types/patch.d.ts.map +1 -0
- package/dist/esm/types/plugin.d.ts.map +1 -1
- package/package.json +5 -4
- package/src/interfaces/IPluginOptions.ts +1 -1
- package/src/patch.ts +101 -0
- package/src/plugin.ts +76 -156
- package/tests/em.test.ts +5 -5
- package/tests/patch.test.ts +141 -0
- package/tests/plugin-callback.test.ts +50 -0
- package/tests/plugin-event-created.test.ts +225 -76
- package/tests/plugin-event-deleted.test.ts +54 -47
- package/tests/plugin-event-updated.test.ts +139 -15
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import mongoose, { model } from 'mongoose'
|
|
1
|
+
import mongoose, { Types, model } from 'mongoose'
|
|
2
2
|
|
|
3
3
|
import UserSchema from './schemas/UserSchema'
|
|
4
4
|
import { patchHistoryPlugin } from '../src/plugin'
|
|
@@ -36,99 +36,248 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
36
36
|
await mongoose.connection.collection('history').deleteMany({})
|
|
37
37
|
})
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
39
|
+
describe('normal cases', () => {
|
|
40
|
+
it('should save() and emit one create event', async () => {
|
|
41
|
+
const john = new User({ name: 'John', role: 'user' })
|
|
42
|
+
await john.save()
|
|
43
|
+
|
|
44
|
+
const history = await History.find({})
|
|
45
|
+
expect(history).toHaveLength(0)
|
|
46
|
+
|
|
47
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
48
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
49
|
+
doc: expect.objectContaining({
|
|
50
|
+
_id: john._id,
|
|
51
|
+
name: john.name,
|
|
52
|
+
role: john.role,
|
|
53
|
+
createdAt: john.createdAt,
|
|
54
|
+
updatedAt: john.updatedAt
|
|
55
|
+
})
|
|
54
56
|
})
|
|
55
57
|
})
|
|
56
|
-
})
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
it('should create() and emit one create event', async () => {
|
|
60
|
+
const user = await User.create({ name: 'John', role: 'user' })
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
const history = await History.find({})
|
|
63
|
+
expect(history).toHaveLength(0)
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
65
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
66
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
67
|
+
doc: expect.objectContaining({
|
|
68
|
+
_id: user._id,
|
|
69
|
+
name: user.name,
|
|
70
|
+
role: user.role,
|
|
71
|
+
createdAt: user.createdAt,
|
|
72
|
+
updatedAt: user.updatedAt
|
|
73
|
+
})
|
|
72
74
|
})
|
|
73
75
|
})
|
|
74
|
-
})
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
it('should insertMany() and emit three create events', async () => {
|
|
78
|
+
const users = await User.insertMany([
|
|
79
|
+
{ name: 'John', role: 'user' },
|
|
80
|
+
{ name: 'Alice', role: 'user' },
|
|
81
|
+
{ name: 'Bob', role: 'user' }
|
|
82
|
+
])
|
|
83
|
+
|
|
84
|
+
const [john, alice, bob] = users
|
|
78
85
|
|
|
79
|
-
|
|
80
|
-
|
|
86
|
+
const history = await History.find({})
|
|
87
|
+
expect(history).toHaveLength(0)
|
|
81
88
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
expect(em.emit).toHaveBeenCalledTimes(3)
|
|
90
|
+
expect(em.emit).toHaveBeenNthCalledWith(1, USER_CREATED, {
|
|
91
|
+
doc: expect.objectContaining({
|
|
92
|
+
_id: john._id,
|
|
93
|
+
name: john.name,
|
|
94
|
+
role: john.role,
|
|
95
|
+
createdAt: john.createdAt,
|
|
96
|
+
updatedAt: john.updatedAt
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
expect(em.emit).toHaveBeenNthCalledWith(2, USER_CREATED, {
|
|
100
|
+
doc: expect.objectContaining({
|
|
101
|
+
_id: alice._id,
|
|
102
|
+
name: alice.name,
|
|
103
|
+
role: alice.role,
|
|
104
|
+
createdAt: alice.createdAt,
|
|
105
|
+
updatedAt: alice.updatedAt
|
|
106
|
+
})
|
|
107
|
+
})
|
|
108
|
+
expect(em.emit).toHaveBeenNthCalledWith(3, USER_CREATED, {
|
|
109
|
+
doc: expect.objectContaining({
|
|
110
|
+
_id: bob._id,
|
|
111
|
+
name: bob.name,
|
|
112
|
+
role: bob.role,
|
|
113
|
+
createdAt: bob.createdAt,
|
|
114
|
+
updatedAt: bob.updatedAt
|
|
115
|
+
})
|
|
90
116
|
})
|
|
91
117
|
})
|
|
92
118
|
})
|
|
93
119
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
120
|
+
describe('upsert cases', () => {
|
|
121
|
+
it('should update() + upsert and emit one create event', async () => {
|
|
122
|
+
await User.update(
|
|
123
|
+
{ name: 'John' },
|
|
124
|
+
{ name: 'John', role: 'admin' },
|
|
125
|
+
{ upsert: true }
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
129
|
+
expect(user).not.toBeNull()
|
|
130
|
+
|
|
131
|
+
const history = await History.find({})
|
|
132
|
+
expect(history).toHaveLength(0)
|
|
133
|
+
|
|
134
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
135
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
136
|
+
doc: expect.objectContaining({
|
|
137
|
+
_id: user?._id,
|
|
138
|
+
name: user?.name,
|
|
139
|
+
role: user?.role
|
|
140
|
+
// Upsert does not set createdAt and updatedAt
|
|
141
|
+
})
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
it('should updateOne() + upsert and emit one create event', async () => {
|
|
146
|
+
await User.updateOne(
|
|
147
|
+
{ name: 'John' },
|
|
148
|
+
{ name: 'John', role: 'admin' },
|
|
149
|
+
{ upsert: true }
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
153
|
+
expect(user).not.toBeNull()
|
|
154
|
+
|
|
155
|
+
const history = await History.find({})
|
|
156
|
+
expect(history).toHaveLength(0)
|
|
157
|
+
|
|
158
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
159
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
160
|
+
doc: expect.objectContaining({
|
|
161
|
+
_id: user?._id,
|
|
162
|
+
name: user?.name,
|
|
163
|
+
role: user?.role
|
|
164
|
+
// Upsert does not set createdAt and updatedAt
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
})
|
|
168
|
+
|
|
169
|
+
it('should replaceOne() + upsert and emit one create event', async () => {
|
|
170
|
+
await User.replaceOne(
|
|
171
|
+
{ name: 'John' },
|
|
172
|
+
{ name: 'John', role: 'admin' },
|
|
173
|
+
{ upsert: true }
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
177
|
+
expect(user).not.toBeNull()
|
|
178
|
+
|
|
179
|
+
const history = await History.find({})
|
|
180
|
+
expect(history).toHaveLength(0)
|
|
181
|
+
|
|
182
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
183
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
184
|
+
doc: expect.objectContaining({
|
|
185
|
+
_id: user?._id,
|
|
186
|
+
name: user?.name,
|
|
187
|
+
role: user?.role
|
|
188
|
+
// Upsert does not set createdAt and updatedAt
|
|
189
|
+
})
|
|
114
190
|
})
|
|
115
191
|
})
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
name:
|
|
120
|
-
role:
|
|
121
|
-
|
|
122
|
-
|
|
192
|
+
|
|
193
|
+
it('should updateMany() + upsert and emit one create event', async () => {
|
|
194
|
+
await User.updateMany(
|
|
195
|
+
{ name: { $in: ['John', 'Alice', 'Bob'] } },
|
|
196
|
+
{ name: 'Steve', role: 'admin' },
|
|
197
|
+
{ upsert: true }
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
const users = await User.findOne({ name: 'Steve', role: 'admin' })
|
|
201
|
+
|
|
202
|
+
const history = await History.find({})
|
|
203
|
+
expect(history).toHaveLength(0)
|
|
204
|
+
|
|
205
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
206
|
+
expect(em.emit).toHaveBeenNthCalledWith(1, USER_CREATED, {
|
|
207
|
+
doc: expect.objectContaining({
|
|
208
|
+
_id: users?._id,
|
|
209
|
+
name: users?.name,
|
|
210
|
+
role: users?.role
|
|
211
|
+
// Upsert does not set createdAt and updatedAt
|
|
212
|
+
})
|
|
213
|
+
})
|
|
214
|
+
})
|
|
215
|
+
|
|
216
|
+
it('should findOneAndUpdate() + upsert and emit one create event', async () => {
|
|
217
|
+
await User.findOneAndUpdate(
|
|
218
|
+
{ name: 'John' },
|
|
219
|
+
{ name: 'John', role: 'admin' },
|
|
220
|
+
{ upsert: true }
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
224
|
+
expect(user).not.toBeNull()
|
|
225
|
+
|
|
226
|
+
const history = await History.find({})
|
|
227
|
+
expect(history).toHaveLength(0)
|
|
228
|
+
|
|
229
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
230
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
231
|
+
doc: expect.objectContaining({
|
|
232
|
+
_id: user?._id,
|
|
233
|
+
name: user?.name,
|
|
234
|
+
role: user?.role
|
|
235
|
+
// Upsert does not set createdAt and updatedAt
|
|
236
|
+
})
|
|
123
237
|
})
|
|
124
238
|
})
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
name:
|
|
129
|
-
role:
|
|
130
|
-
|
|
131
|
-
|
|
239
|
+
|
|
240
|
+
it('should findOneAndReplace() + upsert and emit one create event', async () => {
|
|
241
|
+
await User.findOneAndReplace(
|
|
242
|
+
{ name: 'John' },
|
|
243
|
+
{ name: 'John', role: 'admin' },
|
|
244
|
+
{ upsert: true }
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
248
|
+
expect(user).not.toBeNull()
|
|
249
|
+
|
|
250
|
+
const history = await History.find({})
|
|
251
|
+
expect(history).toHaveLength(0)
|
|
252
|
+
|
|
253
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
254
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
255
|
+
doc: expect.objectContaining({
|
|
256
|
+
_id: user?._id,
|
|
257
|
+
name: user?.name,
|
|
258
|
+
role: user?.role
|
|
259
|
+
// Upsert does not set createdAt and updatedAt
|
|
260
|
+
})
|
|
261
|
+
})
|
|
262
|
+
})
|
|
263
|
+
|
|
264
|
+
it('should findByIdAndUpdate() + upsert and emit one create event', async () => {
|
|
265
|
+
const _id = new Types.ObjectId()
|
|
266
|
+
await User.findByIdAndUpdate(_id, { name: 'John', role: 'admin' }, { upsert: true })
|
|
267
|
+
|
|
268
|
+
const user = await User.findOne({ name: 'John', role: 'admin' })
|
|
269
|
+
expect(user).not.toBeNull()
|
|
270
|
+
|
|
271
|
+
const history = await History.find({})
|
|
272
|
+
expect(history).toHaveLength(0)
|
|
273
|
+
|
|
274
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
275
|
+
expect(em.emit).toHaveBeenCalledWith(USER_CREATED, {
|
|
276
|
+
doc: expect.objectContaining({
|
|
277
|
+
_id: user?._id,
|
|
278
|
+
name: user?.name,
|
|
279
|
+
role: user?.role
|
|
280
|
+
})
|
|
132
281
|
})
|
|
133
282
|
})
|
|
134
283
|
})
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import mongoose, { model } from 'mongoose'
|
|
2
2
|
|
|
3
|
+
import type { ToObjectOptions } from 'mongoose'
|
|
4
|
+
|
|
3
5
|
import UserSchema from './schemas/UserSchema'
|
|
4
6
|
import { patchHistoryPlugin } from '../src/plugin'
|
|
5
7
|
import History from '../src/models/History'
|
|
@@ -13,6 +15,11 @@ jest.mock('../src/em', () => {
|
|
|
13
15
|
}
|
|
14
16
|
})
|
|
15
17
|
|
|
18
|
+
const toObjectOptions: ToObjectOptions = {
|
|
19
|
+
depopulate: true,
|
|
20
|
+
virtuals: false
|
|
21
|
+
}
|
|
22
|
+
|
|
16
23
|
describe('plugin - event delete & patch history disabled', () => {
|
|
17
24
|
const uri = `${globalThis.__MONGO_URI__}${globalThis.__MONGO_DB_NAME__}`
|
|
18
25
|
|
|
@@ -36,7 +43,20 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
36
43
|
await mongoose.connection.collection('history').deleteMany({})
|
|
37
44
|
})
|
|
38
45
|
|
|
39
|
-
it('should
|
|
46
|
+
it('should remove() and emit one delete event', async () => {
|
|
47
|
+
const john = await User.create({ name: 'John', role: 'user' })
|
|
48
|
+
await john.remove()
|
|
49
|
+
|
|
50
|
+
const history = await History.find({})
|
|
51
|
+
expect(history).toHaveLength(0)
|
|
52
|
+
|
|
53
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
54
|
+
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
55
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('should remove() and emit two delete events', async () => {
|
|
40
60
|
const users = await User.create([
|
|
41
61
|
{ name: 'John', role: 'user' },
|
|
42
62
|
{ name: 'Alice', role: 'user' },
|
|
@@ -45,21 +65,25 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
45
65
|
|
|
46
66
|
const [john, alice] = users
|
|
47
67
|
|
|
48
|
-
await User.
|
|
68
|
+
await User.remove({ role: 'user' }).exec()
|
|
69
|
+
|
|
70
|
+
const remaining = await User.find({})
|
|
71
|
+
|
|
72
|
+
expect(remaining).toHaveLength(1)
|
|
49
73
|
|
|
50
74
|
const history = await History.find({})
|
|
51
75
|
expect(history).toHaveLength(0)
|
|
52
76
|
|
|
53
77
|
expect(em.emit).toHaveBeenCalledTimes(2)
|
|
54
78
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
55
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
79
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
56
80
|
})
|
|
57
81
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
58
|
-
oldDoc: expect.objectContaining(alice.toObject(
|
|
82
|
+
oldDoc: expect.objectContaining(alice.toObject(toObjectOptions))
|
|
59
83
|
})
|
|
60
84
|
})
|
|
61
85
|
|
|
62
|
-
it('should
|
|
86
|
+
it('should remove() and emit one delete event { single: true }', async () => {
|
|
63
87
|
const users = await User.create([
|
|
64
88
|
{ name: 'John', role: 'user' },
|
|
65
89
|
{ name: 'Alice', role: 'user' },
|
|
@@ -68,18 +92,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
68
92
|
|
|
69
93
|
const [john] = users
|
|
70
94
|
|
|
71
|
-
await User.
|
|
95
|
+
await User.remove({ role: 'user' }, { single: true }).exec()
|
|
72
96
|
|
|
73
97
|
const history = await History.find({})
|
|
74
98
|
expect(history).toHaveLength(0)
|
|
75
99
|
|
|
76
100
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
77
101
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
78
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
102
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
79
103
|
})
|
|
80
104
|
})
|
|
81
105
|
|
|
82
|
-
it('should
|
|
106
|
+
it('should findOneAndDelete() and emit one delete event', async () => {
|
|
83
107
|
const users = await User.create([
|
|
84
108
|
{ name: 'John', role: 'user' },
|
|
85
109
|
{ name: 'Alice', role: 'user' },
|
|
@@ -88,18 +112,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
88
112
|
|
|
89
113
|
const [john] = users
|
|
90
114
|
|
|
91
|
-
await User.
|
|
115
|
+
await User.findOneAndDelete({ role: 'user' }).exec()
|
|
92
116
|
|
|
93
117
|
const history = await History.find({})
|
|
94
118
|
expect(history).toHaveLength(0)
|
|
95
119
|
|
|
96
120
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
97
121
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
98
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
122
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
99
123
|
})
|
|
100
124
|
})
|
|
101
125
|
|
|
102
|
-
it('should
|
|
126
|
+
it('should findOneAndRemove() and emit one delete event', async () => {
|
|
103
127
|
const users = await User.create([
|
|
104
128
|
{ name: 'John', role: 'user' },
|
|
105
129
|
{ name: 'Alice', role: 'user' },
|
|
@@ -108,18 +132,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
108
132
|
|
|
109
133
|
const [john] = users
|
|
110
134
|
|
|
111
|
-
await User.
|
|
135
|
+
await User.findOneAndRemove({ role: 'user' }).exec()
|
|
112
136
|
|
|
113
137
|
const history = await History.find({})
|
|
114
138
|
expect(history).toHaveLength(0)
|
|
115
139
|
|
|
116
140
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
117
141
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
118
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
142
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
119
143
|
})
|
|
120
144
|
})
|
|
121
145
|
|
|
122
|
-
it('should
|
|
146
|
+
it('should findByIdAndDelete() and emit one delete event', async () => {
|
|
123
147
|
const users = await User.create([
|
|
124
148
|
{ name: 'John', role: 'user' },
|
|
125
149
|
{ name: 'Alice', role: 'user' },
|
|
@@ -128,18 +152,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
128
152
|
|
|
129
153
|
const [john] = users
|
|
130
154
|
|
|
131
|
-
await User.
|
|
155
|
+
await User.findByIdAndDelete(john._id).exec()
|
|
132
156
|
|
|
133
157
|
const history = await History.find({})
|
|
134
158
|
expect(history).toHaveLength(0)
|
|
135
159
|
|
|
136
160
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
137
161
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
138
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
162
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
139
163
|
})
|
|
140
164
|
})
|
|
141
165
|
|
|
142
|
-
it('should
|
|
166
|
+
it('should findByIdAndRemove() and emit one delete event', async () => {
|
|
143
167
|
const users = await User.create([
|
|
144
168
|
{ name: 'John', role: 'user' },
|
|
145
169
|
{ name: 'Alice', role: 'user' },
|
|
@@ -148,18 +172,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
148
172
|
|
|
149
173
|
const [john] = users
|
|
150
174
|
|
|
151
|
-
await User.
|
|
175
|
+
await User.findByIdAndRemove(john._id).exec()
|
|
152
176
|
|
|
153
177
|
const history = await History.find({})
|
|
154
178
|
expect(history).toHaveLength(0)
|
|
155
179
|
|
|
156
180
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
157
181
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
158
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
182
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
159
183
|
})
|
|
160
184
|
})
|
|
161
185
|
|
|
162
|
-
it('should
|
|
186
|
+
it('should deleteOne() and emit one delete event', async () => {
|
|
163
187
|
const users = await User.create([
|
|
164
188
|
{ name: 'John', role: 'user' },
|
|
165
189
|
{ name: 'Alice', role: 'user' },
|
|
@@ -168,18 +192,18 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
168
192
|
|
|
169
193
|
const [john] = users
|
|
170
194
|
|
|
171
|
-
await User.
|
|
195
|
+
await User.deleteOne({ role: 'user' }).exec()
|
|
172
196
|
|
|
173
197
|
const history = await History.find({})
|
|
174
198
|
expect(history).toHaveLength(0)
|
|
175
199
|
|
|
176
200
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
177
201
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
178
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
202
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
179
203
|
})
|
|
180
204
|
})
|
|
181
205
|
|
|
182
|
-
it('should
|
|
206
|
+
it('should deleteMany() and emit two delete events', async () => {
|
|
183
207
|
const users = await User.create([
|
|
184
208
|
{ name: 'John', role: 'user' },
|
|
185
209
|
{ name: 'Alice', role: 'user' },
|
|
@@ -188,25 +212,21 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
188
212
|
|
|
189
213
|
const [john, alice] = users
|
|
190
214
|
|
|
191
|
-
await User.
|
|
192
|
-
|
|
193
|
-
const remaining = await User.find({})
|
|
194
|
-
|
|
195
|
-
expect(remaining).toHaveLength(1)
|
|
215
|
+
await User.deleteMany({ role: 'user' }).exec()
|
|
196
216
|
|
|
197
217
|
const history = await History.find({})
|
|
198
218
|
expect(history).toHaveLength(0)
|
|
199
219
|
|
|
200
220
|
expect(em.emit).toHaveBeenCalledTimes(2)
|
|
201
221
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
202
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
222
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
203
223
|
})
|
|
204
224
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
205
|
-
oldDoc: expect.objectContaining(alice.toObject(
|
|
225
|
+
oldDoc: expect.objectContaining(alice.toObject(toObjectOptions))
|
|
206
226
|
})
|
|
207
227
|
})
|
|
208
228
|
|
|
209
|
-
it('should
|
|
229
|
+
it('should deleteMany() and emit one delete event { single: true }', async () => {
|
|
210
230
|
const users = await User.create([
|
|
211
231
|
{ name: 'John', role: 'user' },
|
|
212
232
|
{ name: 'Alice', role: 'user' },
|
|
@@ -215,14 +235,14 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
215
235
|
|
|
216
236
|
const [john] = users
|
|
217
237
|
|
|
218
|
-
await User.
|
|
238
|
+
await User.deleteMany({ role: 'user' }, { single: true }).exec()
|
|
219
239
|
|
|
220
240
|
const history = await History.find({})
|
|
221
241
|
expect(history).toHaveLength(0)
|
|
222
242
|
|
|
223
243
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
224
244
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
225
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
245
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
226
246
|
})
|
|
227
247
|
})
|
|
228
248
|
|
|
@@ -235,20 +255,7 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
235
255
|
|
|
236
256
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
237
257
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
238
|
-
oldDoc: expect.objectContaining(john.toObject(
|
|
239
|
-
})
|
|
240
|
-
})
|
|
241
|
-
|
|
242
|
-
it('should create then remove and emit one delete event', async () => {
|
|
243
|
-
const john = await User.create({ name: 'John', role: 'user' })
|
|
244
|
-
await john.remove()
|
|
245
|
-
|
|
246
|
-
const history = await History.find({})
|
|
247
|
-
expect(history).toHaveLength(0)
|
|
248
|
-
|
|
249
|
-
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
250
|
-
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
251
|
-
oldDoc: expect.objectContaining(john.toObject({ depopulate: true }))
|
|
258
|
+
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
252
259
|
})
|
|
253
260
|
})
|
|
254
261
|
})
|