ts-patch-mongoose 1.2.0 → 1.2.1
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/dist/cjs/plugin.js +11 -8
- package/dist/cjs/plugin.js.map +1 -1
- package/dist/cjs/types/plugin.d.ts.map +1 -1
- package/dist/esm/plugin.js.map +1 -1
- package/dist/esm/plugin.mjs +11 -8
- package/dist/esm/types/plugin.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/plugin.ts +12 -9
- package/tests/plugin-event-created.test.ts +70 -1
- package/tests/plugin-event-deleted.test.ts +91 -14
- package/tests/plugin-event-updated.test.ts +117 -0
package/dist/cjs/plugin.js
CHANGED
|
@@ -78,12 +78,15 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
78
78
|
collectionName: opts.collectionName ?? this.model.collection.collectionName,
|
|
79
79
|
isNew: options.upsert && count === 0
|
|
80
80
|
};
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
lodash_1.default.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
81
|
+
if (update) {
|
|
82
|
+
delete update.$setOnInsert;
|
|
83
|
+
const keys = lodash_1.default.keys(update).filter((key) => key.startsWith('$'));
|
|
84
|
+
if (!lodash_1.default.isEmpty(keys)) {
|
|
85
|
+
lodash_1.default.forEach(keys, (key) => {
|
|
86
|
+
commands.push({ [key]: update[key] });
|
|
87
|
+
delete update[key];
|
|
88
|
+
});
|
|
89
|
+
}
|
|
87
90
|
}
|
|
88
91
|
const cursor = this.model.find(filter).cursor();
|
|
89
92
|
await cursor.eachAsync(async (doc) => {
|
|
@@ -104,7 +107,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
104
107
|
schema.post(updateMethods, async function (_, next) {
|
|
105
108
|
const options = this.getOptions();
|
|
106
109
|
if (options.ignoreHook)
|
|
107
|
-
return;
|
|
110
|
+
return next();
|
|
108
111
|
const update = this.getUpdate();
|
|
109
112
|
if (!update || !this._context.isNew)
|
|
110
113
|
return;
|
|
@@ -160,7 +163,7 @@ const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
160
163
|
schema.post(deleteMethods, options, async function (_, next) {
|
|
161
164
|
const options = this.getOptions();
|
|
162
165
|
if (options.ignoreHook)
|
|
163
|
-
return;
|
|
166
|
+
return next();
|
|
164
167
|
await (0, patch_1.deletePatch)(opts, this._context);
|
|
165
168
|
next();
|
|
166
169
|
});
|
package/dist/cjs/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AACtB,+CAAqC;AAQrC,mCAA+D;AAC/D,sDAAqB;AAErB,MAAM,OAAO,GAAG;IACd,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,IAAI;CACZ,CAAA;AAED,MAAM,eAAe,GAAoB;IACvC,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED,MAAM,aAAa,GAAG;IACpB,QAAQ;IACR,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;CACpB,CAAA;AAED,MAAM,aAAa,GAAG;IACpB,QAAQ;IACR,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,WAAW;IACX,YAAY;CACb,CAAA;AAKY,QAAA,iBAAiB,GAAG,YAAE,CAAA;AAQ5B,MAAM,kBAAkB,GAAG,SAAS,MAAM,CAAK,MAAiB,EAAE,IAAuB;IAC9F,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,WAAW,IAAI;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAwB,CAAA;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAuB,CAAA;QAE1C,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;YACpC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAC5C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc;YACtE,WAAW,EAAE,CAAC,OAAO,CAAC;SACvB,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;SACjC;aAAM;YACL,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;YACzD,IAAI,QAAQ,EAAE;gBACZ,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;aACpD;SACF;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,WAAW,IAAI,EAAE,IAAI;QAClD,MAAM,OAAO,GAAG;YACd,EAAE,EAAE,QAAQ;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc;YACrE,WAAW,EAAE,IAAwC;SACtD,CAAA;QAED,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEhC,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,aAA0C,EAAE,KAAK,WAAkC,IAAI;QAChG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,EAAE,CAAA;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAG,gBAAC,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAsC,CAAA;QACjF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,QAAQ,GAAiC,EAAE,CAAA;QAEjD,IAAI,CAAC,QAAQ,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc;YAC3E,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,KAAK,CAAC;SACrC,CAAA;QAED,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,YAAY,CAAA;YAC1B,MAAM,IAAI,GAAG,gBAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;YAChE,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,gBAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;oBACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAErC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;gBACpB,CAAC,CAAC,CAAA;aACH;SACF;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;QACpE,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAwB,CAAA;YAClE,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAwB,CAAA;YAErE,OAAO,GAAG,IAAA,qBAAM,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YACjC,gBAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;gBAC9B,IAAI;oBACF,OAAO,GAAG,IAAA,qBAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;iBACnC;gBAAC,OAAO,KAAK,EAAE;iBAEf;YACH,CAAC,CAAC,CAAA;YAEF,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;QAC3D,CAAC,CAAC,CAAA;QAEF,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,aAA0C,EAAE,KAAK,WAAkC,CAAC,EAAE,IAAI;QACpG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,EAAE,CAAA;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAE/B,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK;YAAE,OAAM;QAE3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QAC1E,IAAI,KAAK,EAAE;YACT,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAwB,CAAA;YACtE,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,OAAO,CAAC,CAAA;YAErC,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;SACvC;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,WAAsC,CAAC,EAAE,IAAI;QACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAuB,CAAA;QAE1C,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,QAAQ;YACZ,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS;YAC5C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,CAAC,cAAc;SACvE,CAAA;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;SACjD;QAED,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEhC,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,aAA0C,EAAE,OAAO,EAAE,KAAK,WAAkC,IAAI;QACzG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,EAAE,CAAA;QAErC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAE/B,IAAI,CAAC,QAAQ,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc;SAC5E,CAAA;QAED,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAsB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACtE,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAA;aACjC;SACF;aAAM;YACL,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YACxE,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAA;aAClC;SACF;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;YAC3G,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;SACxD;QAED,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,aAA0C,EAAE,OAAO,EAAE,KAAK,WAAkC,CAAC,EAAE,IAAI;QAC7G,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,IAAI,OAAO,CAAC,UAAU;YAAE,OAAO,IAAI,EAAE,CAAA;QAErC,MAAM,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEtC,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAlKY,QAAA,kBAAkB,sBAkK9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAAmB,MAAM,UAAU,CAAA;AAEzG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwC7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAAmB,MAAM,UAAU,CAAA;AAEzG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwC7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAkKlG,CAAA"}
|
package/dist/esm/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/plugin.mjs
CHANGED
|
@@ -74,12 +74,15 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
74
74
|
collectionName: opts.collectionName ?? this.model.collection.collectionName,
|
|
75
75
|
isNew: options.upsert && count === 0
|
|
76
76
|
};
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
_.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
if (update) {
|
|
78
|
+
delete update.$setOnInsert;
|
|
79
|
+
const keys = _.keys(update).filter((key) => key.startsWith('$'));
|
|
80
|
+
if (!_.isEmpty(keys)) {
|
|
81
|
+
_.forEach(keys, (key) => {
|
|
82
|
+
commands.push({ [key]: update[key] });
|
|
83
|
+
delete update[key];
|
|
84
|
+
});
|
|
85
|
+
}
|
|
83
86
|
}
|
|
84
87
|
const cursor = this.model.find(filter).cursor();
|
|
85
88
|
await cursor.eachAsync(async (doc) => {
|
|
@@ -100,7 +103,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
100
103
|
schema.post(updateMethods, async function (_, next) {
|
|
101
104
|
const options = this.getOptions();
|
|
102
105
|
if (options.ignoreHook)
|
|
103
|
-
return;
|
|
106
|
+
return next();
|
|
104
107
|
const update = this.getUpdate();
|
|
105
108
|
if (!update || !this._context.isNew)
|
|
106
109
|
return;
|
|
@@ -156,7 +159,7 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
|
|
|
156
159
|
schema.post(deleteMethods, options, async function (_, next) {
|
|
157
160
|
const options = this.getOptions();
|
|
158
161
|
if (options.ignoreHook)
|
|
159
|
-
return;
|
|
162
|
+
return next();
|
|
160
163
|
await deletePatch(opts, this._context);
|
|
161
164
|
next();
|
|
162
165
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAAmB,MAAM,UAAU,CAAA;AAEzG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwC7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,KAAK,EAAoB,KAAK,EAA2B,MAAM,EAAmB,MAAM,UAAU,CAAA;AAEzG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwC7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAkKlG,CAAA"}
|
package/package.json
CHANGED
package/src/plugin.ts
CHANGED
|
@@ -104,13 +104,16 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
104
104
|
isNew: options.upsert && count === 0
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
_.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
107
|
+
if (update) {
|
|
108
|
+
delete update.$setOnInsert
|
|
109
|
+
const keys = _.keys(update).filter((key) => key.startsWith('$'))
|
|
110
|
+
if (!_.isEmpty(keys)) {
|
|
111
|
+
_.forEach(keys, (key) => {
|
|
112
|
+
commands.push({ [key]: update[key] })
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
114
|
+
delete update[key]
|
|
115
|
+
})
|
|
116
|
+
}
|
|
114
117
|
}
|
|
115
118
|
|
|
116
119
|
const cursor = this.model.find<HydratedDocument<T>>(filter).cursor()
|
|
@@ -135,7 +138,7 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
135
138
|
|
|
136
139
|
schema.post(updateMethods as MongooseQueryMiddleware[], async function (this: IHookContext<T>, _, next) {
|
|
137
140
|
const options = this.getOptions()
|
|
138
|
-
if (options.ignoreHook) return
|
|
141
|
+
if (options.ignoreHook) return next()
|
|
139
142
|
|
|
140
143
|
const update = this.getUpdate()
|
|
141
144
|
|
|
@@ -204,7 +207,7 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
|
|
|
204
207
|
|
|
205
208
|
schema.post(deleteMethods as MongooseQueryMiddleware[], options, async function (this: IHookContext<T>, _, next) {
|
|
206
209
|
const options = this.getOptions()
|
|
207
|
-
if (options.ignoreHook) return
|
|
210
|
+
if (options.ignoreHook) return next()
|
|
208
211
|
|
|
209
212
|
await deletePatch(opts, this._context)
|
|
210
213
|
|
|
@@ -54,6 +54,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
54
54
|
updatedAt: john.updatedAt
|
|
55
55
|
})
|
|
56
56
|
})
|
|
57
|
+
|
|
58
|
+
// Check if the document is saved
|
|
59
|
+
const found = await User.findOne({})
|
|
60
|
+
expect(found).not.toBeNull()
|
|
61
|
+
expect(found?.name).toBe('John')
|
|
62
|
+
expect(found?.role).toBe('user')
|
|
57
63
|
})
|
|
58
64
|
|
|
59
65
|
it('should create() and emit one create event', async () => {
|
|
@@ -72,6 +78,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
72
78
|
updatedAt: user.updatedAt
|
|
73
79
|
})
|
|
74
80
|
})
|
|
81
|
+
|
|
82
|
+
// Check if the document is saved
|
|
83
|
+
const found = await User.findOne({})
|
|
84
|
+
expect(found).not.toBeNull()
|
|
85
|
+
expect(found?.name).toBe('John')
|
|
86
|
+
expect(found?.role).toBe('user')
|
|
75
87
|
})
|
|
76
88
|
|
|
77
89
|
it('should insertMany() and emit three create events', async () => {
|
|
@@ -79,7 +91,7 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
79
91
|
{ name: 'John', role: 'user' },
|
|
80
92
|
{ name: 'Alice', role: 'user' },
|
|
81
93
|
{ name: 'Bob', role: 'user' }
|
|
82
|
-
])
|
|
94
|
+
], { ordered: true })
|
|
83
95
|
|
|
84
96
|
const [john, alice, bob] = users
|
|
85
97
|
|
|
@@ -114,6 +126,21 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
114
126
|
updatedAt: bob.updatedAt
|
|
115
127
|
})
|
|
116
128
|
})
|
|
129
|
+
|
|
130
|
+
// Check if the documents are saved
|
|
131
|
+
const found = await User.find({})
|
|
132
|
+
expect(found).toHaveLength(3)
|
|
133
|
+
|
|
134
|
+
const [foundJohn, foundAlice, foundBob] = found
|
|
135
|
+
|
|
136
|
+
expect(foundJohn.name).toBe('John')
|
|
137
|
+
expect(foundJohn.role).toBe('user')
|
|
138
|
+
|
|
139
|
+
expect(foundAlice.name).toBe('Alice')
|
|
140
|
+
expect(foundAlice.role).toBe('user')
|
|
141
|
+
|
|
142
|
+
expect(foundBob.name).toBe('Bob')
|
|
143
|
+
expect(foundBob.role).toBe('user')
|
|
117
144
|
})
|
|
118
145
|
})
|
|
119
146
|
|
|
@@ -140,6 +167,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
140
167
|
// Upsert does not set createdAt and updatedAt
|
|
141
168
|
})
|
|
142
169
|
})
|
|
170
|
+
|
|
171
|
+
// Check if the document is saved
|
|
172
|
+
const found = await User.findOne({})
|
|
173
|
+
expect(found).not.toBeNull()
|
|
174
|
+
expect(found?.name).toBe('John')
|
|
175
|
+
expect(found?.role).toBe('admin')
|
|
143
176
|
})
|
|
144
177
|
|
|
145
178
|
it('should updateOne() + upsert and emit one create event', async () => {
|
|
@@ -164,6 +197,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
164
197
|
// Upsert does not set createdAt and updatedAt
|
|
165
198
|
})
|
|
166
199
|
})
|
|
200
|
+
|
|
201
|
+
// Check if the document is saved
|
|
202
|
+
const found = await User.findOne({})
|
|
203
|
+
expect(found).not.toBeNull()
|
|
204
|
+
expect(found?.name).toBe('John')
|
|
205
|
+
expect(found?.role).toBe('admin')
|
|
167
206
|
})
|
|
168
207
|
|
|
169
208
|
it('should replaceOne() + upsert and emit one create event', async () => {
|
|
@@ -188,6 +227,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
188
227
|
// Upsert does not set createdAt and updatedAt
|
|
189
228
|
})
|
|
190
229
|
})
|
|
230
|
+
|
|
231
|
+
// Check if the document is saved
|
|
232
|
+
const found = await User.findOne({})
|
|
233
|
+
expect(found).not.toBeNull()
|
|
234
|
+
expect(found?.name).toBe('John')
|
|
235
|
+
expect(found?.role).toBe('admin')
|
|
191
236
|
})
|
|
192
237
|
|
|
193
238
|
it('should updateMany() + upsert and emit one create event', async () => {
|
|
@@ -211,6 +256,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
211
256
|
// Upsert does not set createdAt and updatedAt
|
|
212
257
|
})
|
|
213
258
|
})
|
|
259
|
+
|
|
260
|
+
// Check if the document is saved
|
|
261
|
+
const found = await User.findById(users?._id)
|
|
262
|
+
expect(found).not.toBeNull()
|
|
263
|
+
expect(found?.name).toBe('Steve')
|
|
264
|
+
expect(found?.role).toBe('admin')
|
|
214
265
|
})
|
|
215
266
|
|
|
216
267
|
it('should findOneAndUpdate() + upsert and emit one create event', async () => {
|
|
@@ -235,6 +286,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
235
286
|
// Upsert does not set createdAt and updatedAt
|
|
236
287
|
})
|
|
237
288
|
})
|
|
289
|
+
|
|
290
|
+
// Check if the document is saved
|
|
291
|
+
const found = await User.findOne({})
|
|
292
|
+
expect(found).not.toBeNull()
|
|
293
|
+
expect(found?.name).toBe('John')
|
|
294
|
+
expect(found?.role).toBe('admin')
|
|
238
295
|
})
|
|
239
296
|
|
|
240
297
|
it('should findOneAndReplace() + upsert and emit one create event', async () => {
|
|
@@ -259,6 +316,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
259
316
|
// Upsert does not set createdAt and updatedAt
|
|
260
317
|
})
|
|
261
318
|
})
|
|
319
|
+
|
|
320
|
+
// Check if the document is saved
|
|
321
|
+
const found = await User.findOne({})
|
|
322
|
+
expect(found).not.toBeNull()
|
|
323
|
+
expect(found?.name).toBe('John')
|
|
324
|
+
expect(found?.role).toBe('admin')
|
|
262
325
|
})
|
|
263
326
|
|
|
264
327
|
it('should findByIdAndUpdate() + upsert and emit one create event', async () => {
|
|
@@ -279,6 +342,12 @@ describe('plugin - event created & patch history disabled', () => {
|
|
|
279
342
|
role: user?.role
|
|
280
343
|
})
|
|
281
344
|
})
|
|
345
|
+
|
|
346
|
+
// Check if the document is saved
|
|
347
|
+
const found = await User.findOne({})
|
|
348
|
+
expect(found).not.toBeNull()
|
|
349
|
+
expect(found?.name).toBe('John')
|
|
350
|
+
expect(found?.role).toBe('admin')
|
|
282
351
|
})
|
|
283
352
|
})
|
|
284
353
|
})
|
|
@@ -54,6 +54,10 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
54
54
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
55
55
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
56
56
|
})
|
|
57
|
+
|
|
58
|
+
// Check if data is deleted
|
|
59
|
+
const user = await User.findById(john._id)
|
|
60
|
+
expect(user).toBeNull()
|
|
57
61
|
})
|
|
58
62
|
|
|
59
63
|
it('should remove() and emit two delete events', async () => {
|
|
@@ -67,10 +71,6 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
67
71
|
|
|
68
72
|
await User.remove({ role: 'user' }).exec()
|
|
69
73
|
|
|
70
|
-
const remaining = await User.find({})
|
|
71
|
-
|
|
72
|
-
expect(remaining).toHaveLength(1)
|
|
73
|
-
|
|
74
74
|
const history = await History.find({})
|
|
75
75
|
expect(history).toHaveLength(0)
|
|
76
76
|
|
|
@@ -81,6 +81,16 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
81
81
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
82
82
|
oldDoc: expect.objectContaining(alice.toObject(toObjectOptions))
|
|
83
83
|
})
|
|
84
|
+
|
|
85
|
+
// Check if data is deleted
|
|
86
|
+
const deletedJohn = await User.findById(john._id)
|
|
87
|
+
expect(deletedJohn).toBeNull()
|
|
88
|
+
|
|
89
|
+
const deletedAlice = await User.findById(alice._id)
|
|
90
|
+
expect(deletedAlice).toBeNull()
|
|
91
|
+
|
|
92
|
+
const remaining = await User.find({})
|
|
93
|
+
expect(remaining).toHaveLength(1)
|
|
84
94
|
})
|
|
85
95
|
|
|
86
96
|
it('should remove() and emit one delete event { single: true }', async () => {
|
|
@@ -101,6 +111,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
101
111
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
102
112
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
103
113
|
})
|
|
114
|
+
|
|
115
|
+
// Check if data is deleted
|
|
116
|
+
const deletedJohn = await User.findById(john._id)
|
|
117
|
+
expect(deletedJohn).toBeNull()
|
|
118
|
+
|
|
119
|
+
const remaining = await User.find({})
|
|
120
|
+
expect(remaining).toHaveLength(2)
|
|
104
121
|
})
|
|
105
122
|
|
|
106
123
|
it('should findOneAndDelete() and emit one delete event', async () => {
|
|
@@ -121,6 +138,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
121
138
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
122
139
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
123
140
|
})
|
|
141
|
+
|
|
142
|
+
// Check if data is deleted
|
|
143
|
+
const deletedJohn = await User.findById(john._id)
|
|
144
|
+
expect(deletedJohn).toBeNull()
|
|
145
|
+
|
|
146
|
+
const remaining = await User.find({})
|
|
147
|
+
expect(remaining).toHaveLength(2)
|
|
124
148
|
})
|
|
125
149
|
|
|
126
150
|
it('should findOneAndRemove() and emit one delete event', async () => {
|
|
@@ -141,6 +165,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
141
165
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
142
166
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
143
167
|
})
|
|
168
|
+
|
|
169
|
+
// Check if data is deleted
|
|
170
|
+
const deletedJohn = await User.findById(john._id)
|
|
171
|
+
expect(deletedJohn).toBeNull()
|
|
172
|
+
|
|
173
|
+
const remaining = await User.find({ name: { $in: ['Alice', 'Bob'] } })
|
|
174
|
+
expect(remaining).toHaveLength(2)
|
|
144
175
|
})
|
|
145
176
|
|
|
146
177
|
it('should findByIdAndDelete() and emit one delete event', async () => {
|
|
@@ -161,6 +192,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
161
192
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
162
193
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
163
194
|
})
|
|
195
|
+
|
|
196
|
+
// Check if data is deleted
|
|
197
|
+
const deletedJohn = await User.findById(john._id)
|
|
198
|
+
expect(deletedJohn).toBeNull()
|
|
199
|
+
|
|
200
|
+
const remaining = await User.find({ name: { $in: ['Alice', 'Bob'] } })
|
|
201
|
+
expect(remaining).toHaveLength(2)
|
|
164
202
|
})
|
|
165
203
|
|
|
166
204
|
it('should findByIdAndRemove() and emit one delete event', async () => {
|
|
@@ -181,6 +219,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
181
219
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
182
220
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
183
221
|
})
|
|
222
|
+
|
|
223
|
+
// Check if data is deleted
|
|
224
|
+
const deletedJohn = await User.findById(john._id)
|
|
225
|
+
expect(deletedJohn).toBeNull()
|
|
226
|
+
|
|
227
|
+
const remaining = await User.find({ name: { $in: ['Alice', 'Bob'] } })
|
|
228
|
+
expect(remaining).toHaveLength(2)
|
|
184
229
|
})
|
|
185
230
|
|
|
186
231
|
it('should deleteOne() and emit one delete event', async () => {
|
|
@@ -201,6 +246,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
201
246
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
202
247
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
203
248
|
})
|
|
249
|
+
|
|
250
|
+
// Check if data is deleted
|
|
251
|
+
const deletedJohn = await User.findById(john._id)
|
|
252
|
+
expect(deletedJohn).toBeNull()
|
|
253
|
+
|
|
254
|
+
const remaining = await User.find({ name: { $in: ['Alice', 'Bob'] } })
|
|
255
|
+
expect(remaining).toHaveLength(2)
|
|
204
256
|
})
|
|
205
257
|
|
|
206
258
|
it('should deleteMany() and emit two delete events', async () => {
|
|
@@ -224,6 +276,16 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
224
276
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
225
277
|
oldDoc: expect.objectContaining(alice.toObject(toObjectOptions))
|
|
226
278
|
})
|
|
279
|
+
|
|
280
|
+
// Check if data is deleted
|
|
281
|
+
const deletedJohn = await User.findById(john._id)
|
|
282
|
+
expect(deletedJohn).toBeNull()
|
|
283
|
+
|
|
284
|
+
const deletedAlice = await User.findById(alice._id)
|
|
285
|
+
expect(deletedAlice).toBeNull()
|
|
286
|
+
|
|
287
|
+
const remaining = await User.find({})
|
|
288
|
+
expect(remaining).toHaveLength(1)
|
|
227
289
|
})
|
|
228
290
|
|
|
229
291
|
it('should deleteMany() and emit one delete event { single: true }', async () => {
|
|
@@ -244,6 +306,13 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
244
306
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
245
307
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
246
308
|
})
|
|
309
|
+
|
|
310
|
+
// Check if data is deleted
|
|
311
|
+
const deletedJohn = await User.findById(john._id)
|
|
312
|
+
expect(deletedJohn).toBeNull()
|
|
313
|
+
|
|
314
|
+
const remaining = await User.find({})
|
|
315
|
+
expect(remaining).toHaveLength(2)
|
|
247
316
|
})
|
|
248
317
|
|
|
249
318
|
it('should create then delete and emit one delete event', async () => {
|
|
@@ -257,35 +326,43 @@ describe('plugin - event delete & patch history disabled', () => {
|
|
|
257
326
|
expect(em.emit).toHaveBeenCalledWith(USER_DELETED, {
|
|
258
327
|
oldDoc: expect.objectContaining(john.toObject(toObjectOptions))
|
|
259
328
|
})
|
|
329
|
+
|
|
330
|
+
// Check if data is deleted
|
|
331
|
+
const deletedJohn = await User.findById(john._id)
|
|
332
|
+
expect(deletedJohn).toBeNull()
|
|
333
|
+
|
|
334
|
+
const remaining = await User.find({})
|
|
335
|
+
expect(remaining).toHaveLength(0)
|
|
260
336
|
})
|
|
261
337
|
|
|
262
338
|
it('should ignoreHook option on deleteMany', async () => {
|
|
263
|
-
await User.create({ name: 'John', role: 'user' })
|
|
339
|
+
const john = await User.create({ name: 'John', role: 'user' })
|
|
264
340
|
await User.deleteMany({ role: 'user' }, { ignoreHook: true }).exec()
|
|
265
341
|
|
|
266
342
|
const history = await History.find({})
|
|
267
343
|
expect(history).toHaveLength(0)
|
|
268
344
|
|
|
269
345
|
expect(em.emit).toHaveBeenCalledTimes(0)
|
|
346
|
+
|
|
347
|
+
// Check if data is deleted
|
|
348
|
+
const deletedJohn = await User.findById(john._id)
|
|
349
|
+
expect(deletedJohn).toBeNull()
|
|
270
350
|
})
|
|
271
351
|
|
|
272
352
|
it('should ignoreHook option on deleteOne', async () => {
|
|
273
|
-
await User.create({ name: 'John', role: 'user' })
|
|
353
|
+
const john = await User.create({ name: 'John', role: 'user' })
|
|
274
354
|
await User.deleteOne({ role: 'user' }, { ignoreHook: true }).exec()
|
|
275
355
|
|
|
276
356
|
const history = await History.find({})
|
|
277
357
|
expect(history).toHaveLength(0)
|
|
278
358
|
|
|
279
359
|
expect(em.emit).toHaveBeenCalledTimes(0)
|
|
280
|
-
})
|
|
281
360
|
|
|
282
|
-
|
|
283
|
-
await User.
|
|
284
|
-
|
|
361
|
+
// Check if data is deleted
|
|
362
|
+
const deletedJohn = await User.findById(john._id)
|
|
363
|
+
expect(deletedJohn).toBeNull()
|
|
285
364
|
|
|
286
|
-
const
|
|
287
|
-
expect(
|
|
288
|
-
|
|
289
|
-
expect(em.emit).toHaveBeenCalledTimes(0)
|
|
365
|
+
const remaining = await User.find({})
|
|
366
|
+
expect(remaining).toHaveLength(0)
|
|
290
367
|
})
|
|
291
368
|
})
|
|
@@ -72,6 +72,13 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
72
72
|
{ op: 'replace', path: '/name', value: 'John Doe' }
|
|
73
73
|
])
|
|
74
74
|
})
|
|
75
|
+
|
|
76
|
+
// Confirm that the document is updated
|
|
77
|
+
const users = await User.find({})
|
|
78
|
+
expect(users).toHaveLength(2)
|
|
79
|
+
const [bob, john] = users
|
|
80
|
+
expect(bob.name).toBe('Bob')
|
|
81
|
+
expect(john.name).toBe('John Doe')
|
|
75
82
|
})
|
|
76
83
|
|
|
77
84
|
it('should update() and emit three update event', async () => {
|
|
@@ -89,6 +96,14 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
89
96
|
expect(history).toHaveLength(0)
|
|
90
97
|
|
|
91
98
|
expect(em.emit).toHaveBeenCalledTimes(3)
|
|
99
|
+
|
|
100
|
+
// Confirm that the document is updated
|
|
101
|
+
const updated = await User.find({})
|
|
102
|
+
expect(updated).toHaveLength(3)
|
|
103
|
+
const [alice, bob, john] = updated
|
|
104
|
+
expect(alice.role).toBe('manager')
|
|
105
|
+
expect(bob.role).toBe('manager')
|
|
106
|
+
expect(john.role).toBe('manager')
|
|
92
107
|
})
|
|
93
108
|
|
|
94
109
|
it('should updateOne() and emit one update event', async () => {
|
|
@@ -106,6 +121,14 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
106
121
|
expect(history).toHaveLength(0)
|
|
107
122
|
|
|
108
123
|
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
124
|
+
|
|
125
|
+
// Confirm that the document is updated
|
|
126
|
+
const updated = await User.find({})
|
|
127
|
+
expect(updated).toHaveLength(3)
|
|
128
|
+
const [alice, bob, john] = updated
|
|
129
|
+
expect(alice.role).toBe('user')
|
|
130
|
+
expect(bob.role).toBe('manager')
|
|
131
|
+
expect(john.role).toBe('user')
|
|
109
132
|
})
|
|
110
133
|
|
|
111
134
|
it('should replaceOne() and emit two update event', async () => {
|
|
@@ -147,6 +170,14 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
147
170
|
{ op: 'replace', path: '/role', value: 'manager' }
|
|
148
171
|
])
|
|
149
172
|
})
|
|
173
|
+
|
|
174
|
+
// Confirm that the document is updated
|
|
175
|
+
const updated = await User.find({})
|
|
176
|
+
expect(updated).toHaveLength(3)
|
|
177
|
+
const [alice, bob, john] = updated
|
|
178
|
+
expect(alice.role).toBe('user')
|
|
179
|
+
expect(bob.role).toBe('manager')
|
|
180
|
+
expect(john.role).toBe('user')
|
|
150
181
|
})
|
|
151
182
|
|
|
152
183
|
it('should updateMany() and emit two update event', async () => {
|
|
@@ -164,6 +195,14 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
164
195
|
expect(history).toHaveLength(0)
|
|
165
196
|
|
|
166
197
|
expect(em.emit).toHaveBeenCalledTimes(3)
|
|
198
|
+
|
|
199
|
+
// Confirm that the document is updated
|
|
200
|
+
const updated = await User.find({})
|
|
201
|
+
expect(updated).toHaveLength(3)
|
|
202
|
+
const [alice, bob, john] = updated
|
|
203
|
+
expect(alice.role).toBe('manager')
|
|
204
|
+
expect(bob.role).toBe('manager')
|
|
205
|
+
expect(john.role).toBe('manager')
|
|
167
206
|
})
|
|
168
207
|
|
|
169
208
|
it('should findOneAndUpdate() and emit one update event', async () => {
|
|
@@ -199,6 +238,10 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
199
238
|
{ op: 'replace', path: '/name', value: 'John Doe' }
|
|
200
239
|
])
|
|
201
240
|
})
|
|
241
|
+
|
|
242
|
+
// Confirm that the document is updated
|
|
243
|
+
expect(updated?.name).toBe('John Doe')
|
|
244
|
+
expect(updated?.role).toBe('manager')
|
|
202
245
|
})
|
|
203
246
|
|
|
204
247
|
it('should findOneAndReplace() and emit one update event', async () => {
|
|
@@ -236,6 +279,10 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
236
279
|
{ op: 'replace', path: '/role', value: 'manager' }
|
|
237
280
|
])
|
|
238
281
|
})
|
|
282
|
+
|
|
283
|
+
// Confirm that the document is updated
|
|
284
|
+
expect(updated?.name).toBe('John Doe')
|
|
285
|
+
expect(updated?.role).toBe('manager')
|
|
239
286
|
})
|
|
240
287
|
|
|
241
288
|
it('should findByIdAndUpdate() and emit one update event', async () => {
|
|
@@ -268,6 +315,11 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
268
315
|
{ op: 'replace', path: '/role', value: 'manager' }
|
|
269
316
|
])
|
|
270
317
|
})
|
|
318
|
+
|
|
319
|
+
// Confirm that the document is updated
|
|
320
|
+
const updated = await User.findById(created._id).exec()
|
|
321
|
+
expect(updated?.name).toBe('John Doe')
|
|
322
|
+
expect(updated?.role).toBe('manager')
|
|
271
323
|
})
|
|
272
324
|
|
|
273
325
|
it('should update and emit one update event', async () => {
|
|
@@ -303,6 +355,10 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
303
355
|
{ op: 'replace', path: '/name', value: 'John Doe' }
|
|
304
356
|
])
|
|
305
357
|
})
|
|
358
|
+
|
|
359
|
+
// Confirm that the document is updated
|
|
360
|
+
expect(updated?.name).toBe('John Doe')
|
|
361
|
+
expect(updated?.role).toBe('manager')
|
|
306
362
|
})
|
|
307
363
|
|
|
308
364
|
it('should updateMany and emit two update events', async () => {
|
|
@@ -362,5 +418,66 @@ describe('plugin - event updated & patch history disabled', () => {
|
|
|
362
418
|
{ op: 'replace', path: '/name', value: 'John Doe' }
|
|
363
419
|
])
|
|
364
420
|
})
|
|
421
|
+
|
|
422
|
+
// Confirm that the documents are updated
|
|
423
|
+
expect(updated1?.name).toBe('John Doe')
|
|
424
|
+
expect(updated1?.role).toBe('manager')
|
|
425
|
+
|
|
426
|
+
expect(updated2?.name).toBe('John Doe')
|
|
427
|
+
expect(updated2?.role).toBe('manager')
|
|
428
|
+
})
|
|
429
|
+
|
|
430
|
+
it('should findOneAndUpdate $set and emit one update event', async () => {
|
|
431
|
+
const created = await User.create({ name: 'Bob', role: 'user' })
|
|
432
|
+
await User.findOneAndUpdate({ _id: created._id }, { $set: { name: 'John Doe', role: 'manager' } })
|
|
433
|
+
const updated = await User.findById(created._id).exec()
|
|
434
|
+
expect(updated).not.toBeNull()
|
|
435
|
+
expect(updated?.name).toBe('John Doe')
|
|
436
|
+
expect(updated?.role).toBe('manager')
|
|
437
|
+
|
|
438
|
+
const history = await History.find({})
|
|
439
|
+
expect(history).toHaveLength(0)
|
|
440
|
+
|
|
441
|
+
expect(em.emit).toHaveBeenCalledTimes(1)
|
|
442
|
+
expect(em.emit).toHaveBeenCalledWith(USER_UPDATED, {
|
|
443
|
+
oldDoc: expect.objectContaining({
|
|
444
|
+
__v: 0,
|
|
445
|
+
_id: created._id,
|
|
446
|
+
name: created.name,
|
|
447
|
+
role: created.role,
|
|
448
|
+
createdAt: created.createdAt
|
|
449
|
+
}),
|
|
450
|
+
doc: expect.objectContaining({
|
|
451
|
+
__v: 0,
|
|
452
|
+
_id: updated?._id,
|
|
453
|
+
name: updated?.name,
|
|
454
|
+
role: updated?.role,
|
|
455
|
+
createdAt: created.createdAt
|
|
456
|
+
}),
|
|
457
|
+
patch: expect.arrayContaining([
|
|
458
|
+
{ op: 'test', path: '/name', value: 'Bob' },
|
|
459
|
+
{ op: 'replace', path: '/name', value: 'John Doe' },
|
|
460
|
+
{ op: 'test', path: '/role', value: 'user' },
|
|
461
|
+
{ op: 'replace', path: '/role', value: 'manager' }
|
|
462
|
+
])
|
|
463
|
+
})
|
|
464
|
+
|
|
465
|
+
// Confirm that the document is updated
|
|
466
|
+
expect(updated?.name).toBe('John Doe')
|
|
467
|
+
expect(updated?.role).toBe('manager')
|
|
468
|
+
})
|
|
469
|
+
|
|
470
|
+
it('should ignoreHook option on updateMany', async () => {
|
|
471
|
+
const john = await User.create({ name: 'John', role: 'user' })
|
|
472
|
+
await User.updateMany({ role: 'user' }, { role: 'admin' }, { ignoreHook: true }).exec()
|
|
473
|
+
|
|
474
|
+
const history = await History.find({})
|
|
475
|
+
expect(history).toHaveLength(0)
|
|
476
|
+
|
|
477
|
+
expect(em.emit).toHaveBeenCalledTimes(0)
|
|
478
|
+
|
|
479
|
+
// Confirm that the document is updated
|
|
480
|
+
const updated = await User.findById(john._id).exec()
|
|
481
|
+
expect(updated?.role).toBe('admin')
|
|
365
482
|
})
|
|
366
483
|
})
|