prisma-mock 0.0.24 → 0.0.27

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.
Files changed (2) hide show
  1. package/lib/index.js +32 -16
  2. package/package.json +2 -3
package/lib/index.js CHANGED
@@ -24,31 +24,29 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
24
24
  return name.substr(0, 1).toLowerCase() + name.substr(1);
25
25
  };
26
26
  const shallowCompare = (a, b) => {
27
- for (let key in a) {
27
+ for (let key in b) {
28
28
  if (a[key] !== b[key])
29
29
  return false;
30
30
  }
31
31
  return true;
32
32
  };
33
- const checkIds = (model, data) => {
33
+ const removeMultiFieldIds = (model, data) => {
34
34
  var _a, _b;
35
35
  const c = getCamelCase(model.name);
36
36
  const idFields = model.idFields || ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields);
37
- const checkId = (ids) => {
37
+ const removeId = (ids) => {
38
38
  const id = ids.join('_');
39
39
  data = Object.assign(Object.assign({}, data), { [c]: data[c].map(item => {
40
40
  const _a = item, _b = id, idVal = _a[_b], rest = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
41
- return Object.assign(Object.assign({ [id]: ids.reduce((prev, field) => {
42
- return Object.assign(Object.assign({}, prev), { [field]: item[field] });
43
- }, {}) }, item), idVal);
41
+ return Object.assign(Object.assign({}, rest), idVal);
44
42
  }) });
45
43
  };
46
44
  if ((idFields === null || idFields === void 0 ? void 0 : idFields.length) > 1) {
47
- checkId(idFields);
45
+ removeId(idFields);
48
46
  }
49
47
  if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
50
48
  for (const uniqueField of model.uniqueFields) {
51
- checkId(uniqueField);
49
+ removeId(uniqueField);
52
50
  }
53
51
  }
54
52
  return data;
@@ -162,6 +160,8 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
162
160
  delegate.update({ data: c.update, where: getFieldRelationshipWhere(item, field) });
163
161
  }
164
162
  }
163
+ const _e = d, _f = field.name, _update = _e[_f], rest = __rest(_e, [typeof _f === "symbol" ? _f : _f + ""]);
164
+ d = rest; //?
165
165
  }
166
166
  }
167
167
  if (c.increment) {
@@ -275,13 +275,13 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
275
275
  const idFields = model.idFields || ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields);
276
276
  if ((idFields === null || idFields === void 0 ? void 0 : idFields.length) > 1) {
277
277
  if (child === idFields.join('_')) {
278
- return shallowCompare(val, filter);
278
+ return shallowCompare(item, filter);
279
279
  }
280
280
  }
281
281
  if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
282
282
  for (const uniqueField of model.uniqueFields) {
283
283
  if (child === uniqueField.join('_')) {
284
- return shallowCompare(val, filter);
284
+ return shallowCompare(item, filter);
285
285
  }
286
286
  }
287
287
  }
@@ -402,14 +402,20 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
402
402
  return e;
403
403
  });
404
404
  data = Object.assign(Object.assign({}, data), { [prop]: newItems });
405
+ data = removeMultiFieldIds(model, data);
405
406
  return data;
406
407
  };
407
408
  const create = args => {
408
409
  const d = nestedUpdate(args, true, null);
409
410
  data = Object.assign(Object.assign({}, data), { [prop]: [...data[prop], d] });
410
- data = checkIds(model, data);
411
- // TODO: multi field ids
412
- return findOne(Object.assign({ where: { id: d.id } }, args));
411
+ data = removeMultiFieldIds(model, data);
412
+ let where = {};
413
+ for (const field of model.fields) {
414
+ if (field.default) {
415
+ where[field.name] = d[field.name];
416
+ }
417
+ }
418
+ return findOne(Object.assign({ where }, args));
413
419
  };
414
420
  const deleteMany = args => {
415
421
  const model = cachedSchema.datamodel.models.find(model => {
@@ -484,8 +490,18 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
484
490
  return newItem;
485
491
  };
486
492
  const update = (args) => {
487
- updateMany(args);
488
- return findOne(args);
493
+ let updatedItem;
494
+ const newItems = data[prop].map(e => {
495
+ if (matchFnc(args.where)(e)) {
496
+ let data = nestedUpdate(args, false, e);
497
+ updatedItem = Object.assign(Object.assign({}, e), data);
498
+ return updatedItem;
499
+ }
500
+ return e;
501
+ });
502
+ data = Object.assign(Object.assign({}, data), { [prop]: newItems });
503
+ data = removeMultiFieldIds(model, data);
504
+ return findOne(Object.assign(Object.assign({}, args), { where: updatedItem }));
489
505
  };
490
506
  return {
491
507
  findOne,
@@ -529,7 +545,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
529
545
  if (!data[c]) {
530
546
  data = Object.assign(Object.assign({}, (data || {})), { [c]: [] });
531
547
  }
532
- data = checkIds(model, data);
548
+ data = removeMultiFieldIds(model, data);
533
549
  const objs = Delegate(c, model);
534
550
  Object.keys(objs).forEach(fncName => {
535
551
  client[c][fncName].mockImplementation(async (...params) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-mock",
3
- "version": "0.0.24",
3
+ "version": "0.0.27",
4
4
  "description": "Mock prisma for unit testing database",
5
5
  "main": "lib/index.js",
6
6
  "license": "MIT",
@@ -24,8 +24,7 @@
24
24
  "scripts": {
25
25
  "preversion": "tsc",
26
26
  "build": "tsc",
27
- "watch": "tsc --watch",
28
- "postinstall": "prisma generate"
27
+ "watch": "tsc --watch"
29
28
  },
30
29
  "peerDependencies": {
31
30
  "@prisma/client": "^3.5.0"