ts-patch-mongoose 1.0.3 → 1.0.4

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/README.md CHANGED
@@ -15,13 +15,34 @@ Patch history & events for mongoose models
15
15
 
16
16
  [![npm](https://nodei.co/npm/ts-patch-mongoose.png)](https://www.npmjs.com/package/ts-patch-mongoose)
17
17
 
18
+ ## Motivation
19
+
20
+ ts-patch-mongoose is a plugin for mongoose and requires it as peer dependency
21
+ \
22
+ I needed to track changes in my mongoose models and save them as patch history (audit log) in separate collection. Events will allow me to track changes in my models and react to them in other parts of the application. I also wanted to omit some fields from patch history.
23
+
24
+ ## Features
25
+
26
+ - Track changes in mongoose models
27
+ - Save changes in a separate collection as a patch history
28
+ - Emit events when a model is created, updated or deleted
29
+ - Supports typescript
30
+ - Let you omit fields that you don't want to track in patch history
31
+ - Subscribe to one/many types of event
32
+ - You can use events or patch history or both
33
+
18
34
  ## Installation
19
35
 
36
+ - Locally inside your project
37
+
20
38
  ```bash
21
39
  npm install ts-patch-mongoose
40
+ yarn add ts-patch-mongoose
22
41
  ```
23
42
 
24
- ## Usage example of plugin
43
+ ## Example
44
+
45
+ Setup your mongoose model
25
46
 
26
47
  ```typescript
27
48
  import { Schema, model } from 'mongoose'
@@ -43,11 +64,18 @@ const UserSchema = new Schema<IUser>({
43
64
  }
44
65
  }, { timestamps: true })
45
66
 
46
- UserSchema.plugin(patchHistoryPlugin, {
67
+ UserSchema.plugin(patchHistoryPlugin, {
68
+ // In case you just want to track changes in your models using events below.
69
+ // And don't want to save changes to patch history collection
70
+ patchHistoryDisabled: true,
71
+
72
+ // Create event constants provide them to plugin and use them to subscribe to events
47
73
  eventCreated: USER_CREATED_EVENT,
48
74
  eventUpdated: USER_UPDATED_EVENT,
49
75
  eventDeleted: USER_DELETED_EVENT,
50
- omit: ['__v', 'role', 'createdAt', 'updatedAt']
76
+
77
+ // You can omit some properties in case you don't want to save them to patch history
78
+ omit: ['__v', 'createdAt', 'updatedAt']
51
79
  })
52
80
 
53
81
  const User = model('User', UserSchema)
@@ -55,7 +83,9 @@ const User = model('User', UserSchema)
55
83
  export default User
56
84
  ```
57
85
 
58
- ## Somewhere in your code you can subscribe to events
86
+ ## Subscribe
87
+
88
+ You can subscribe to events using patchEventEmitter anywhere in your application
59
89
 
60
90
  ```typescript
61
91
  import { patchEventEmitter } from 'ts-patch-mongoose'
@@ -63,4 +93,12 @@ import { patchEventEmitter } from 'ts-patch-mongoose'
63
93
  patchEventEmitter.on(USER_CREATED_EVENT, ({ doc }) => {
64
94
  console.log('User created', doc)
65
95
  })
96
+
97
+ patchEventEmitter.on(USER_UPDATED_EVENT, ({ doc, oldDoc, patch }) => {
98
+ console.log('User updated', doc, patch)
99
+ })
100
+
101
+ patchEventEmitter.on(USER_DELETED_EVENT, ({ doc }) => {
102
+ console.log('User deleted', doc)
103
+ })
66
104
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IA8IlG,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAgJlG,CAAA"}
@@ -131,7 +131,8 @@ const patchHistoryPlugin = function plugin(schema, opts) {
131
131
  const update = this.getUpdate();
132
132
  if (update && this._context.isNew) {
133
133
  const cursor = this.model.findOne(update).cursor();
134
- await cursor.eachAsync(async (current) => {
134
+ await cursor.eachAsync(async (doc) => {
135
+ const current = doc.toObject({ depopulate: true });
135
136
  if (opts.eventCreated) {
136
137
  em_1.default.emit(opts.eventCreated, { doc: current });
137
138
  }
@@ -182,11 +183,11 @@ const patchHistoryPlugin = function plugin(schema, opts) {
182
183
  });
183
184
  }
184
185
  }
185
- if (opts.patchHistoryDisabled)
186
- continue;
187
- await History_1.default.bulkWrite(bulk, { ordered: false }).catch((err) => {
188
- console.error(err);
189
- });
186
+ if (!opts.patchHistoryDisabled) {
187
+ await History_1.default.bulkWrite(bulk, { ordered: false }).catch((err) => {
188
+ console.error(err);
189
+ });
190
+ }
190
191
  }
191
192
  });
192
193
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;AAAA,4DAAsB;AACtB,kEAA4B;AAC5B,8EAAuC;AACvC,+CAAqC;AAQrC,sDAAqB;AACrB,uEAAsC;AAEtC,MAAM,OAAO,GAAG;IACd,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,IAAI;CACZ,CAAA;AAED,SAAS,UAAU,CAAK,IAAuB,EAAE,OAA4B,EAAE,QAA6B;IAC1G,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAe,CAAA;IACrE,IAAI,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAe,CAAA;IAEvE,IAAI,IAAI,CAAC,IAAI,EAAE;QACb,aAAa,GAAG,IAAA,mBAAI,EAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,cAAc,GAAG,IAAA,mBAAI,EAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;KACjD;IAED,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAA;AAC1C,CAAC;AAED,KAAK,UAAU,WAAW,CAAK,IAAuB,EAAE,OAAoB,EAAE,OAA4B,EAAE,QAA6B;IACvI,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IAE7E,IAAI,gBAAC,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,gBAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAAE,OAAM;IAEjE,MAAM,KAAK,GAAG,yBAAS,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE,IAAI,CAAC,CAAA;IAEpE,IAAI,gBAAC,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAM;IAE5B,IAAI,IAAI,CAAC,YAAY,EAAE;QACrB,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;KACtE;IAED,IAAI,IAAI,CAAC,oBAAoB;QAAE,OAAM;IAErC,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,MAAM,WAAW,GAAG,MAAM,iBAAO,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAA;IAEnH,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC,EAAE;QAC3C,OAAO,GAAG,WAAW,CAAC,OAAO,GAAG,CAAC,CAAA;KAClC;IAED,MAAM,iBAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,QAAQ,CAAC,GAAqB;QAC5C,KAAK;QACL,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAK,IAAuB,EAAE,OAAoB,EAAE,OAA4B;IACxG,IAAI,IAAI,CAAC,oBAAoB;QAAE,OAAM;IAErC,MAAM,iBAAO,CAAC,MAAM,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,YAAY,EAAE,OAAO,CAAC,GAAqB;QAC3C,GAAG,EAAE,OAAO;KACb,CAAC,CAAA;AACJ,CAAC;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,UAAU,EAAE,IAAI,EAAE,CAAwB,CAAA;QAC1E,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;SACvE,CAAA;QAED,IAAI;YACF,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;iBAC7C;gBACD,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;aAC1C;iBAAM;gBACL,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;gBACzD,IAAI,QAAQ,EAAE;oBACZ,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;iBACpD;aACF;YACD,IAAI,EAAE,CAAA;SACP;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAsB,CAAC,CAAA;SAC7B;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,KAAK,WAAkC,IAAI;QAC/G,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAuC,CAAA;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAEjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;QACnD,MAAM,QAAQ,GAAiC,EAAE,CAAA;QAEjD,MAAM,OAAO,GAAgB;YAC3B,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,CAAC,QAAQ,GAAG,OAAO,CAAA;QAEvB,IAAI;YACF,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,MAAM,IAAI,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC9B,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;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;YAC/C,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAwB,EAAE,EAAE;gBACxD,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAwB,CAAA;gBACvE,OAAO,GAAG,IAAA,qBAAM,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBACjC,gBAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC9B,IAAI;wBACF,OAAO,GAAG,IAAA,qBAAM,EAAC,OAAO,EAAE,OAAO,CAAC,CAAA;qBACnC;oBAAC,OAAO,KAAK,EAAE;qBAEf;gBACH,CAAC,CAAC,CAAA;gBACF,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAwB,CAAC,CAAA;YACtG,CAAC,CAAC,CAAA;YACF,IAAI,EAAE,CAAA;SACP;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,KAAsB,CAAC,CAAA;SAC7B;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,KAAK;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAE/B,IAAI,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAA;YAClD,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAA4B,EAAE,EAAE;gBAC5D,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;iBAC7C;gBACD,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;SACH;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,WAAkC,IAAI;QAC5I,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAmB,CAAA;QAE1C,MAAM,OAAO,GAAgB;YAC3B,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,MAAM,EAAE;YACX,OAAO,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1D,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;aACtD;SACF;QAED,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,EAAE,CAAA;IACR,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK;QACvG,IAAI,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,oBAAoB,CAAC;YAAE,OAAM;QAErG,MAAM,MAAM,GAAG,gBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QACvD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,MAAM,IAAI,GAAG,EAAE,CAAA;YACf,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE;gBAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;oBACrB,YAAE,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;iBACvC;gBACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;oBAC9B,IAAI,CAAC,IAAI,CAAC;wBACR,SAAS,EAAE;4BACT,QAAQ,EAAE;gCACR,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE;gCACpB,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS;gCAClC,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;gCAC5C,YAAY,EAAE,MAAM,CAAC,GAAqB;gCAC1C,GAAG,EAAE,MAAM;gCACX,OAAO,EAAE,CAAC;6BACX;yBACF;qBACF,CAAC,CAAA;iBACH;aACF;YAED,IAAI,IAAI,CAAC,oBAAoB;gBAAE,SAAQ;YACvC,MAAM,iBAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAkB,EAAE,EAAE;gBAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;SACH;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AA9IY,QAAA,kBAAkB,sBA8I9B"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IA8IlG,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAgJlG,CAAA"}
@@ -127,7 +127,8 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
127
127
  const update = this.getUpdate();
128
128
  if (update && this._context.isNew) {
129
129
  const cursor = this.model.findOne(update).cursor();
130
- await cursor.eachAsync(async (current) => {
130
+ await cursor.eachAsync(async (doc) => {
131
+ const current = doc.toObject({ depopulate: true });
131
132
  if (opts.eventCreated) {
132
133
  em.emit(opts.eventCreated, { doc: current });
133
134
  }
@@ -178,11 +179,11 @@ export const patchHistoryPlugin = function plugin(schema, opts) {
178
179
  });
179
180
  }
180
181
  }
181
- if (opts.patchHistoryDisabled)
182
- continue;
183
- await History.bulkWrite(bulk, { ordered: false }).catch((err) => {
184
- console.error(err);
185
- });
182
+ if (!opts.patchHistoryDisabled) {
183
+ await History.bulkWrite(bulk, { ordered: false }).catch((err) => {
184
+ console.error(err);
185
+ });
186
+ }
186
187
  }
187
188
  });
188
189
  };
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IA8IlG,CAAA"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAKA,OAAO,KAAK,EAAmC,KAAK,EAAiB,MAAM,EAAS,MAAM,UAAU,CAAA;AAEpG,OAAO,KAAK,cAAc,MAAM,6BAA6B,CAAA;AAwE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAAK,CAAA;AAQnC,eAAO,MAAM,kBAAkB,oOAAoE,IAgJlG,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-patch-mongoose",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "Patch history & events for mongoose models",
5
5
  "author": "Alex Eagle",
6
6
  "license": "MIT",
package/src/plugin.ts CHANGED
@@ -164,7 +164,8 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
164
164
 
165
165
  if (update && this._context.isNew) {
166
166
  const cursor = this.model.findOne(update).cursor()
167
- await cursor.eachAsync(async (current: HydratedDocument<T>) => {
167
+ await cursor.eachAsync(async (doc: HydratedDocument<T>) => {
168
+ const current = doc.toObject({ depopulate: true }) as HydratedDocument<T>
168
169
  if (opts.eventCreated) {
169
170
  em.emit(opts.eventCreated, { doc: current })
170
171
  }
@@ -221,10 +222,11 @@ export const patchHistoryPlugin = function plugin<T> (schema: Schema<T>, opts: I
221
222
  }
222
223
  }
223
224
 
224
- if (opts.patchHistoryDisabled) continue
225
- await History.bulkWrite(bulk, { ordered: false }).catch((err: MongooseError) => {
226
- console.error(err)
227
- })
225
+ if (!opts.patchHistoryDisabled) {
226
+ await History.bulkWrite(bulk, { ordered: false }).catch((err: MongooseError) => {
227
+ console.error(err)
228
+ })
229
+ }
228
230
  }
229
231
  })
230
232
  }
@@ -1,6 +1,6 @@
1
1
  import mongoose from 'mongoose'
2
2
 
3
- describe('mongoose', () => {
3
+ describe('mongoose - in-memory test', () => {
4
4
  const uri = `${globalThis.__MONGO_URI__}${globalThis.__MONGO_DB_NAME__}`
5
5
 
6
6
  beforeAll(async () => {
@@ -19,10 +19,10 @@ describe('mongoose', () => {
19
19
  it('should insert a doc into collection', async () => {
20
20
  const users = mongoose.connection.db.collection('users')
21
21
 
22
- const mockUser = { name: 'John' }
23
- const user = await users.insertOne(mockUser)
22
+ const doc = { name: 'John' }
23
+ const user = await users.insertOne(doc)
24
24
 
25
25
  const insertedUser = await users.findOne({ _id: user.insertedId })
26
- expect(insertedUser).toEqual(mockUser)
26
+ expect(insertedUser).toEqual(doc)
27
27
  })
28
28
  })
@@ -59,6 +59,8 @@ describe('plugin - patch history disabled', () => {
59
59
 
60
60
  const history = await History.find({})
61
61
  expect(history).toHaveLength(0)
62
+
63
+ expect(em.emit).toHaveBeenCalledTimes(0)
62
64
  })
63
65
 
64
66
  it('should updateOne', async () => {
@@ -69,6 +71,8 @@ describe('plugin - patch history disabled', () => {
69
71
 
70
72
  const history = await History.find({})
71
73
  expect(history).toHaveLength(0)
74
+
75
+ expect(em.emit).toHaveBeenCalledTimes(0)
72
76
  })
73
77
 
74
78
  it('should findOneAndUpdate', async () => {
@@ -79,6 +83,8 @@ describe('plugin - patch history disabled', () => {
79
83
 
80
84
  const history = await History.find({})
81
85
  expect(history).toHaveLength(0)
86
+
87
+ expect(em.emit).toHaveBeenCalledTimes(0)
82
88
  })
83
89
 
84
90
  it('should update deprecated', async () => {
@@ -101,6 +107,8 @@ describe('plugin - patch history disabled', () => {
101
107
 
102
108
  const history = await History.find({})
103
109
  expect(history).toHaveLength(0)
110
+
111
+ expect(em.emit).toHaveBeenCalledTimes(0)
104
112
  })
105
113
 
106
114
  it('should create many', async () => {
@@ -111,6 +119,8 @@ describe('plugin - patch history disabled', () => {
111
119
 
112
120
  const history = await History.find({})
113
121
  expect(history).toHaveLength(0)
122
+
123
+ expect(em.emit).toHaveBeenCalledTimes(0)
114
124
  })
115
125
 
116
126
  it('should findOneAndUpdate upsert', async () => {
@@ -120,6 +130,8 @@ describe('plugin - patch history disabled', () => {
120
130
 
121
131
  const history = await History.find({})
122
132
  expect(history).toHaveLength(0)
133
+
134
+ expect(em.emit).toHaveBeenCalledTimes(0)
123
135
  })
124
136
 
125
137
  it('should update many', async () => {
@@ -132,5 +144,7 @@ describe('plugin - patch history disabled', () => {
132
144
 
133
145
  const history = await History.find({})
134
146
  expect(history).toHaveLength(0)
147
+
148
+ expect(em.emit).toHaveBeenCalledTimes(0)
135
149
  })
136
150
  })
@@ -46,28 +46,72 @@ describe('plugin', () => {
46
46
  user.name = 'Bob'
47
47
  await user.save()
48
48
 
49
+ await User.deleteMany({ role: 'user' }).exec()
50
+
49
51
  const history = await History.find({})
50
- expect(history).toHaveLength(3)
52
+ expect(history).toHaveLength(4)
51
53
 
52
- const [first, second, third] = history
54
+ const [first, second, third, fourth] = history
53
55
 
56
+ // 1 create
57
+ expect(first.version).toBe(0)
54
58
  expect(first.op).toBe('create')
59
+ expect(first.modelName).toBe('User')
60
+ expect(first.collectionName).toBe('users')
61
+ expect(first.collectionId).toEqual(user._id)
62
+
63
+ expect(first.doc).toHaveProperty('_id', user._id)
64
+ expect(first.doc).toHaveProperty('name', 'John')
65
+ expect(first.doc).toHaveProperty('role', 'user')
66
+ expect(first.doc).toHaveProperty('createdAt')
67
+ expect(first.doc).toHaveProperty('updatedAt')
68
+
55
69
  expect(first.patch).toHaveLength(0)
56
- expect(first.doc.name).toBe('John')
57
- expect(first.doc.role).toBe('user')
58
- expect(first.version).toBe(0)
59
70
 
71
+ // 2 update
72
+ expect(second.version).toBe(1)
60
73
  expect(second.op).toBe('update')
74
+ expect(second.modelName).toBe('User')
75
+ expect(second.collectionName).toBe('users')
76
+ expect(second.collectionId).toEqual(user._id)
77
+
78
+ expect(second.doc).toBeUndefined()
79
+
61
80
  expect(second.patch).toHaveLength(2)
62
- expect(second.patch[1].value).toBe('Alice')
63
- expect(second.version).toBe(1)
81
+ expect(second.patch).toMatchObject([
82
+ { op: 'test', path: '/name', value: 'John' },
83
+ { op: 'replace', path: '/name', value: 'Alice' }
84
+ ])
64
85
 
86
+ // 3 update
87
+ expect(third.version).toBe(2)
65
88
  expect(third.op).toBe('update')
89
+ expect(third.modelName).toBe('User')
90
+ expect(third.collectionName).toBe('users')
91
+ expect(third.collectionId).toEqual(user._id)
92
+
93
+ expect(third.doc).toBeUndefined()
94
+
66
95
  expect(third.patch).toHaveLength(2)
67
- expect(third.patch[1].value).toBe('Bob')
68
- expect(third.version).toBe(2)
96
+ expect(third.patch).toMatchObject([
97
+ { op: 'test', path: '/name', value: 'Alice' },
98
+ { op: 'replace', path: '/name', value: 'Bob' }
99
+ ])
69
100
 
70
- await User.deleteMany({ role: 'user' }).exec()
101
+ // 4 delete
102
+ expect(fourth.version).toBe(0)
103
+ expect(fourth.op).toBe('deleteMany')
104
+ expect(fourth.modelName).toBe('User')
105
+ expect(fourth.collectionName).toBe('users')
106
+ expect(fourth.collectionId).toEqual(user._id)
107
+
108
+ expect(fourth.doc).toHaveProperty('_id', user._id)
109
+ expect(fourth.doc).toHaveProperty('name', 'Bob')
110
+ expect(fourth.doc).toHaveProperty('role', 'user')
111
+ expect(fourth.doc).toHaveProperty('createdAt')
112
+ expect(fourth.doc).toHaveProperty('updatedAt')
113
+
114
+ expect(fourth.patch).toHaveLength(0)
71
115
 
72
116
  expect(em.emit).toHaveBeenCalledTimes(4)
73
117
  expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
@@ -98,13 +142,24 @@ describe('plugin', () => {
98
142
 
99
143
  const [first] = history
100
144
 
145
+ // 1 create
146
+ expect(first.version).toBe(0)
101
147
  expect(first.op).toBe('create')
148
+ expect(first.modelName).toBe('User')
149
+ expect(first.collectionName).toBe('users')
150
+ expect(first.collectionId).toEqual(user._id)
151
+
152
+ expect(first.doc).toHaveProperty('_id', user._id)
153
+ expect(first.doc).toHaveProperty('name', 'John')
154
+ expect(first.doc).toHaveProperty('role', 'user')
155
+ expect(first.doc).toHaveProperty('createdAt')
156
+ expect(first.doc).toHaveProperty('updatedAt')
157
+
102
158
  expect(first.patch).toHaveLength(0)
103
- expect(first.doc.name).toBe('John')
104
- expect(first.doc.role).toBe('user')
105
- expect(first.version).toBe(0)
106
159
 
107
- expect(user.role).toBe('manager')
160
+ expect(em.emit).toHaveBeenCalledTimes(1)
161
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
162
+ // no update event emitted because role is omitted
108
163
  })
109
164
 
110
165
  it('should updateOne', async () => {
@@ -118,16 +173,43 @@ describe('plugin', () => {
118
173
 
119
174
  const [first, second] = history
120
175
 
176
+ // 1 create
177
+ expect(first.version).toBe(0)
121
178
  expect(first.op).toBe('create')
179
+ expect(first.modelName).toBe('User')
180
+ expect(first.collectionName).toBe('users')
181
+ expect(first.collectionId).toEqual(user._id)
182
+
183
+ expect(first.doc).toHaveProperty('_id', user._id)
184
+ expect(first.doc).toHaveProperty('name', 'John')
185
+ expect(first.doc).toHaveProperty('role', 'user')
186
+ expect(first.doc).toHaveProperty('createdAt')
187
+ expect(first.doc).toHaveProperty('updatedAt')
188
+
122
189
  expect(first.patch).toHaveLength(0)
123
- expect(first.doc.name).toBe('John')
124
- expect(first.doc.role).toBe('user')
125
- expect(first.version).toBe(0)
126
190
 
191
+ // 2 update
192
+ expect(second.version).toBe(1)
127
193
  expect(second.op).toBe('updateOne')
194
+ expect(second.modelName).toBe('User')
195
+ expect(second.collectionName).toBe('users')
196
+ expect(second.collectionId).toEqual(user._id)
197
+
198
+ expect(second.doc).toBeUndefined()
199
+
128
200
  expect(second.patch).toHaveLength(2)
129
- expect(second.patch[1].value).toBe('Alice')
130
- expect(second.version).toBe(1)
201
+ expect(second.patch).toMatchObject([
202
+ { op: 'test', path: '/name', value: 'John' },
203
+ { op: 'replace', path: '/name', value: 'Alice' }
204
+ ])
205
+
206
+ expect(em.emit).toHaveBeenCalledTimes(2)
207
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
208
+ expect(em.emit).toHaveBeenCalledWith(USER_UPDATED_EVENT, {
209
+ oldDoc: expect.objectContaining({ _id: user._id, name: 'John', role: 'user' }),
210
+ doc: expect.objectContaining({ _id: user._id, name: 'Alice', role: 'user' }),
211
+ patch: second.patch
212
+ })
131
213
  })
132
214
 
133
215
  it('should findOneAndUpdate', async () => {
@@ -141,15 +223,43 @@ describe('plugin', () => {
141
223
 
142
224
  const [first, second] = history
143
225
 
144
- expect(first.op).toBe('create')
145
- expect(second.patch).toHaveLength(2)
146
- expect(first.doc.name).toBe('John')
226
+ // 1 create
147
227
  expect(first.version).toBe(0)
228
+ expect(first.op).toBe('create')
229
+ expect(first.modelName).toBe('User')
230
+ expect(first.collectionName).toBe('users')
231
+ expect(first.collectionId).toEqual(user._id)
232
+
233
+ expect(first.doc).toHaveProperty('_id', user._id)
234
+ expect(first.doc).toHaveProperty('name', 'John')
235
+ expect(first.doc).toHaveProperty('role', 'user')
236
+ expect(first.doc).toHaveProperty('createdAt')
237
+ expect(first.doc).toHaveProperty('updatedAt')
238
+
239
+ expect(first.patch).toHaveLength(0)
148
240
 
241
+ // 2 update
242
+ expect(second.version).toBe(1)
149
243
  expect(second.op).toBe('findOneAndUpdate')
244
+ expect(second.modelName).toBe('User')
245
+ expect(second.collectionName).toBe('users')
246
+ expect(second.collectionId).toEqual(user._id)
247
+
248
+ expect(second.doc).toBeUndefined()
249
+
150
250
  expect(second.patch).toHaveLength(2)
151
- expect(second.patch[1].value).toBe('Alice')
152
- expect(second.version).toBe(1)
251
+ expect(second.patch).toMatchObject([
252
+ { op: 'test', path: '/name', value: 'John' },
253
+ { op: 'replace', path: '/name', value: 'Alice' }
254
+ ])
255
+
256
+ expect(em.emit).toHaveBeenCalledTimes(2)
257
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
258
+ expect(em.emit).toHaveBeenCalledWith(USER_UPDATED_EVENT, {
259
+ oldDoc: expect.objectContaining({ _id: user._id, name: 'John', role: 'user' }),
260
+ doc: expect.objectContaining({ _id: user._id, name: 'Alice', role: 'user' }),
261
+ patch: second.patch
262
+ })
153
263
  })
154
264
 
155
265
  it('should update deprecated', async () => {
@@ -163,15 +273,43 @@ describe('plugin', () => {
163
273
 
164
274
  const [first, second] = history
165
275
 
166
- expect(first.op).toBe('create')
167
- expect(second.patch).toHaveLength(2)
168
- expect(first.doc.name).toBe('John')
276
+ // 1 create
169
277
  expect(first.version).toBe(0)
278
+ expect(first.op).toBe('create')
279
+ expect(first.modelName).toBe('User')
280
+ expect(first.collectionName).toBe('users')
281
+ expect(first.collectionId).toEqual(user._id)
282
+
283
+ expect(first.doc).toHaveProperty('_id', user._id)
284
+ expect(first.doc).toHaveProperty('name', 'John')
285
+ expect(first.doc).toHaveProperty('role', 'user')
286
+ expect(first.doc).toHaveProperty('createdAt')
287
+ expect(first.doc).toHaveProperty('updatedAt')
288
+
289
+ expect(first.patch).toHaveLength(0)
170
290
 
291
+ // 2 update
292
+ expect(second.version).toBe(1)
171
293
  expect(second.op).toBe('update')
294
+ expect(second.modelName).toBe('User')
295
+ expect(second.collectionName).toBe('users')
296
+ expect(second.collectionId).toEqual(user._id)
297
+
298
+ expect(second.doc).toBeUndefined()
299
+
172
300
  expect(second.patch).toHaveLength(2)
173
- expect(second.patch[1].value).toBe('Alice')
174
- expect(second.version).toBe(1)
301
+ expect(second.patch).toMatchObject([
302
+ { op: 'test', path: '/name', value: 'John' },
303
+ { op: 'replace', path: '/name', value: 'Alice' }
304
+ ])
305
+
306
+ expect(em.emit).toHaveBeenCalledTimes(2)
307
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
308
+ expect(em.emit).toHaveBeenCalledWith(USER_UPDATED_EVENT, {
309
+ oldDoc: expect.objectContaining({ _id: user._id, name: 'John', role: 'user' }),
310
+ doc: expect.objectContaining({ _id: user._id, name: 'Alice', role: 'user' }),
311
+ patch: second.patch
312
+ })
175
313
  })
176
314
 
177
315
  it('should updated deprecated with multi flag', async () => {
@@ -187,51 +325,123 @@ describe('plugin', () => {
187
325
 
188
326
  const [first, second, third, fourth] = history
189
327
 
190
- expect(first.op).toBe('create')
191
- expect(second.patch).toHaveLength(0)
192
- expect(first.doc.name).toBe('John')
193
- expect(first.doc.role).toBe('user')
328
+ // 1 create
194
329
  expect(first.version).toBe(0)
330
+ expect(first.op).toBe('create')
331
+ expect(first.modelName).toBe('User')
332
+ expect(first.collectionName).toBe('users')
333
+ expect(first.collectionId).toEqual(john._id)
334
+
335
+ expect(first.doc).toHaveProperty('_id', john._id)
336
+ expect(first.doc).toHaveProperty('name', 'John')
337
+ expect(first.doc).toHaveProperty('role', 'user')
338
+ expect(first.doc).toHaveProperty('createdAt')
339
+ expect(first.doc).toHaveProperty('updatedAt')
195
340
 
341
+ expect(first.patch).toHaveLength(0)
342
+
343
+ // 2 create
344
+ expect(second.version).toBe(0)
196
345
  expect(second.op).toBe('create')
346
+ expect(second.modelName).toBe('User')
347
+ expect(second.collectionName).toBe('users')
348
+ expect(second.collectionId).toEqual(alice._id)
349
+
350
+ expect(second.doc).toHaveProperty('_id', alice._id)
351
+ expect(second.doc).toHaveProperty('name', 'Alice')
352
+ expect(second.doc).toHaveProperty('role', 'user')
353
+ expect(second.doc).toHaveProperty('createdAt')
354
+ expect(second.doc).toHaveProperty('updatedAt')
355
+
197
356
  expect(second.patch).toHaveLength(0)
198
- expect(second.doc.name).toBe('Alice')
199
- expect(first.doc.role).toBe('user')
200
- expect(second.version).toBe(0)
201
357
 
358
+ // 3 update
359
+ expect(third.version).toBe(1)
202
360
  expect(third.op).toBe('update')
361
+ expect(third.modelName).toBe('User')
362
+ expect(third.collectionName).toBe('users')
363
+ expect(third.collectionId).toEqual(john._id)
364
+
365
+ expect(third.doc).toBeUndefined()
366
+
203
367
  expect(third.patch).toHaveLength(2)
204
- expect(third.patch[1].value).toBe('Bob')
205
- expect(third.version).toBe(1)
368
+ expect(third.patch).toMatchObject([
369
+ { op: 'test', path: '/name', value: 'John' },
370
+ { op: 'replace', path: '/name', value: 'Bob' }
371
+ ])
206
372
 
373
+ // 4 update
374
+ expect(fourth.version).toBe(1)
207
375
  expect(fourth.op).toBe('update')
376
+ expect(fourth.modelName).toBe('User')
377
+ expect(fourth.collectionName).toBe('users')
378
+ expect(fourth.collectionId).toEqual(alice._id)
379
+
380
+ expect(fourth.doc).toBeUndefined()
381
+
208
382
  expect(fourth.patch).toHaveLength(2)
209
- expect(fourth.patch[1].value).toBe('Bob')
210
- expect(fourth.version).toBe(1)
383
+ expect(fourth.patch).toMatchObject([
384
+ { op: 'test', path: '/name', value: 'Alice' },
385
+ { op: 'replace', path: '/name', value: 'Bob' }
386
+ ])
387
+
388
+ expect(em.emit).toHaveBeenCalledTimes(4)
389
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
390
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: second.doc })
391
+ expect(em.emit).toHaveBeenCalledWith(USER_UPDATED_EVENT, {
392
+ oldDoc: expect.objectContaining({ _id: john._id, name: 'John', role: 'user' }),
393
+ doc: expect.objectContaining({ _id: john._id, name: 'Bob', role: 'user' }),
394
+ patch: third.patch
395
+ })
396
+ expect(em.emit).toHaveBeenCalledWith(USER_UPDATED_EVENT, {
397
+ oldDoc: expect.objectContaining({ _id: alice._id, name: 'Alice', role: 'user' }),
398
+ doc: expect.objectContaining({ _id: alice._id, name: 'Bob', role: 'user' }),
399
+ patch: fourth.patch
400
+ })
211
401
  })
212
402
 
213
403
  it('should create many', async () => {
214
404
  await User.create([
215
- { name: 'John', role: 'user' },
216
- { name: 'Alice', role: 'user' }
405
+ { name: 'Alice', role: 'user' },
406
+ { name: 'John', role: 'user' }
217
407
  ])
218
408
 
219
- const history = await History.find({})
409
+ const history = await History.find({}).sort('doc.name')
220
410
  expect(history).toHaveLength(2)
221
411
 
222
412
  const [first, second] = history
223
413
 
414
+ // 1 create
415
+ expect(first.version).toBe(0)
224
416
  expect(first.op).toBe('create')
417
+ expect(first.modelName).toBe('User')
418
+ expect(first.collectionName).toBe('users')
419
+
420
+ expect(first.doc).toHaveProperty('_id')
421
+ expect(first.doc).toHaveProperty('name', 'Alice')
422
+ expect(first.doc).toHaveProperty('role', 'user')
423
+ expect(first.doc).toHaveProperty('createdAt')
424
+ expect(first.doc).toHaveProperty('updatedAt')
425
+
225
426
  expect(first.patch).toHaveLength(0)
226
- expect(first.doc.name).toBe('John')
227
- expect(first.doc.role).toBe('user')
228
- expect(first.version).toBe(0)
229
427
 
428
+ // 2 create
429
+ expect(second.version).toBe(0)
230
430
  expect(second.op).toBe('create')
431
+ expect(second.modelName).toBe('User')
432
+ expect(second.collectionName).toBe('users')
433
+
434
+ expect(second.doc).toHaveProperty('_id')
435
+ expect(second.doc).toHaveProperty('name', 'John')
436
+ expect(second.doc).toHaveProperty('role', 'user')
437
+ expect(second.doc).toHaveProperty('createdAt')
438
+ expect(second.doc).toHaveProperty('updatedAt')
439
+
231
440
  expect(second.patch).toHaveLength(0)
232
- expect(second.doc.name).toBe('Alice')
233
- expect(second.doc.role).toBe('user')
234
- expect(second.version).toBe(0)
441
+
442
+ expect(em.emit).toHaveBeenCalledTimes(2)
443
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
444
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: second.doc })
235
445
  })
236
446
 
237
447
  it('should findOneAndUpdate upsert', async () => {
@@ -244,10 +454,26 @@ describe('plugin', () => {
244
454
 
245
455
  const [first] = history
246
456
 
457
+ // 1 create
458
+ expect(first.version).toBe(0)
247
459
  expect(first.op).toBe('findOneAndUpdate')
460
+ expect(first.modelName).toBe('User')
461
+ expect(first.collectionName).toBe('users')
462
+
463
+ expect(first.doc).toHaveProperty('_id')
464
+ expect(first.doc).toHaveProperty('name', 'Bob')
465
+ expect(first.doc).toHaveProperty('role', 'user')
466
+
467
+ // Upsert don't have createdAt and updatedAt and validation errors
468
+ // Investigate this case later
469
+ // expect(first.doc).toHaveProperty('createdAt')
470
+ // expect(first.doc).toHaveProperty('updatedAt')
471
+
248
472
  expect(first.patch).toHaveLength(0)
249
- expect(first.doc.name).toBe('Bob')
250
- expect(first.version).toBe(0)
473
+
474
+ expect(em.emit).toHaveBeenCalledTimes(1)
475
+ expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })
476
+ // updated event is not emitted because it's an upsert
251
477
  })
252
478
 
253
479
  it('should update many', async () => {
@@ -263,27 +489,66 @@ describe('plugin', () => {
263
489
 
264
490
  const [first, second, third, fourth] = history
265
491
 
492
+ // 1 create
493
+ expect(first.version).toBe(0)
266
494
  expect(first.op).toBe('create')
495
+ expect(first.modelName).toBe('User')
496
+ expect(first.collectionName).toBe('users')
497
+ expect(first.collectionId).toEqual(john._id)
498
+
499
+ expect(first.doc).toHaveProperty('_id', john._id)
500
+ expect(first.doc).toHaveProperty('name', 'John')
501
+ expect(first.doc).toHaveProperty('role', 'user')
502
+ expect(first.doc).toHaveProperty('createdAt')
503
+ expect(first.doc).toHaveProperty('updatedAt')
504
+
267
505
  expect(first.patch).toHaveLength(0)
268
- expect(first.doc.name).toBe('John')
269
- expect(first.doc.role).toBe('user')
270
- expect(first.version).toBe(0)
271
506
 
507
+ // 2 create
508
+
509
+ expect(second.version).toBe(0)
272
510
  expect(second.op).toBe('create')
511
+ expect(second.modelName).toBe('User')
512
+ expect(second.collectionName).toBe('users')
513
+ expect(second.collectionId).toEqual(alice._id)
514
+
515
+ expect(second.doc).toHaveProperty('_id', alice._id)
516
+ expect(second.doc).toHaveProperty('name', 'Alice')
517
+ expect(second.doc).toHaveProperty('role', 'user')
518
+ expect(second.doc).toHaveProperty('createdAt')
519
+ expect(second.doc).toHaveProperty('updatedAt')
520
+
273
521
  expect(second.patch).toHaveLength(0)
274
- expect(second.doc.name).toBe('Alice')
275
- expect(second.doc.role).toBe('user')
276
- expect(second.version).toBe(0)
277
522
 
523
+ // 3 update
524
+ expect(third.version).toBe(1)
278
525
  expect(third.op).toBe('updateMany')
526
+ expect(third.modelName).toBe('User')
527
+ expect(third.collectionName).toBe('users')
528
+ expect(third.collectionId).toEqual(john._id)
529
+
530
+ expect(third.doc).toBeUndefined()
531
+
279
532
  expect(third.patch).toHaveLength(2)
280
- expect(third.patch[1].value).toBe('Bob')
281
- expect(third.version).toBe(1)
533
+ expect(third.patch).toMatchObject([
534
+ { op: 'test', path: '/name', value: 'John' },
535
+ { op: 'replace', path: '/name', value: 'Bob' }
536
+ ])
282
537
 
538
+ // 4 update
539
+ expect(fourth.version).toBe(1)
283
540
  expect(fourth.op).toBe('updateMany')
541
+ expect(fourth.modelName).toBe('User')
542
+ expect(fourth.collectionName).toBe('users')
543
+ expect(fourth.collectionId).toEqual(alice._id)
544
+
545
+ expect(fourth.doc).toBeUndefined()
546
+
284
547
  expect(fourth.patch).toHaveLength(2)
285
- expect(fourth.patch[1].value).toBe('Bob')
286
- expect(fourth.version).toBe(1)
548
+ expect(fourth.patch).toMatchObject([
549
+ { op: 'test', path: '/name', value: 'Alice' },
550
+ { op: 'replace', path: '/name', value: 'Bob' }
551
+ ])
287
552
 
288
553
  expect(em.emit).toHaveBeenCalledTimes(4)
289
554
  expect(em.emit).toHaveBeenCalledWith(USER_CREATED_EVENT, { doc: first.doc })