prisma-mock 0.0.25 → 0.0.28
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/lib/index.js +56 -31
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -10,13 +10,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
10
|
}
|
|
11
11
|
return t;
|
|
12
12
|
};
|
|
13
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
-
};
|
|
16
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
const
|
|
14
|
+
const client_1 = require("@prisma/client");
|
|
18
15
|
const jest_mock_extended_1 = require("jest-mock-extended");
|
|
19
|
-
const path_1 = __importDefault(require("path"));
|
|
20
16
|
let cachedSchema;
|
|
21
17
|
const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_extended_1.mockDeep)()) => {
|
|
22
18
|
let autoincrement = {};
|
|
@@ -24,31 +20,29 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
24
20
|
return name.substr(0, 1).toLowerCase() + name.substr(1);
|
|
25
21
|
};
|
|
26
22
|
const shallowCompare = (a, b) => {
|
|
27
|
-
for (let key in
|
|
23
|
+
for (let key in b) {
|
|
28
24
|
if (a[key] !== b[key])
|
|
29
25
|
return false;
|
|
30
26
|
}
|
|
31
27
|
return true;
|
|
32
28
|
};
|
|
33
|
-
const
|
|
29
|
+
const removeMultiFieldIds = (model, data) => {
|
|
34
30
|
var _a, _b;
|
|
35
31
|
const c = getCamelCase(model.name);
|
|
36
32
|
const idFields = model.idFields || ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields);
|
|
37
|
-
const
|
|
33
|
+
const removeId = (ids) => {
|
|
38
34
|
const id = ids.join('_');
|
|
39
35
|
data = Object.assign(Object.assign({}, data), { [c]: data[c].map(item => {
|
|
40
36
|
const _a = item, _b = id, idVal = _a[_b], rest = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
41
|
-
return Object.assign(Object.assign({
|
|
42
|
-
return Object.assign(Object.assign({}, prev), { [field]: item[field] });
|
|
43
|
-
}, {}) }, item), idVal);
|
|
37
|
+
return Object.assign(Object.assign({}, rest), idVal);
|
|
44
38
|
}) });
|
|
45
39
|
};
|
|
46
40
|
if ((idFields === null || idFields === void 0 ? void 0 : idFields.length) > 1) {
|
|
47
|
-
|
|
41
|
+
removeId(idFields);
|
|
48
42
|
}
|
|
49
43
|
if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
50
44
|
for (const uniqueField of model.uniqueFields) {
|
|
51
|
-
|
|
45
|
+
removeId(uniqueField);
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
return data;
|
|
@@ -73,14 +67,17 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
73
67
|
});
|
|
74
68
|
return joinfield;
|
|
75
69
|
};
|
|
76
|
-
if (!cachedSchema) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
70
|
+
// if (!cachedSchema) {
|
|
71
|
+
// const schemaPath = path.resolve(process.cwd(), 'prisma/schema.prisma')
|
|
72
|
+
// var pathToModule =
|
|
73
|
+
// pathToSchema || require.resolve(schemaPath)
|
|
74
|
+
// const datamodel = getSchemaSync(pathToModule)
|
|
75
|
+
// cachedSchema = await getDMMF({
|
|
76
|
+
// datamodel,
|
|
77
|
+
// }) //?
|
|
78
|
+
// Prisma.dmmf //?
|
|
79
|
+
// }
|
|
80
|
+
let cachedSchema = client_1.Prisma.dmmf;
|
|
84
81
|
// @ts-ignore
|
|
85
82
|
client["$transaction"].mockImplementation(async (actions) => {
|
|
86
83
|
for (const action of actions) {
|
|
@@ -138,7 +135,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
138
135
|
}
|
|
139
136
|
}
|
|
140
137
|
}
|
|
141
|
-
if (c.update || c.updateMany) {
|
|
138
|
+
if (c.update || c.updateMany || c.deleteMany) {
|
|
142
139
|
const name = getCamelCase(field.type);
|
|
143
140
|
const delegate = Delegate(name, model);
|
|
144
141
|
if (c.updateMany) {
|
|
@@ -151,7 +148,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
151
148
|
delegate.updateMany(c.updateMany);
|
|
152
149
|
}
|
|
153
150
|
}
|
|
154
|
-
else {
|
|
151
|
+
else if (c.update) {
|
|
155
152
|
if (Array.isArray(c.update)) {
|
|
156
153
|
c.update.forEach(update => {
|
|
157
154
|
delegate.update(update);
|
|
@@ -162,6 +159,18 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
162
159
|
delegate.update({ data: c.update, where: getFieldRelationshipWhere(item, field) });
|
|
163
160
|
}
|
|
164
161
|
}
|
|
162
|
+
else {
|
|
163
|
+
if (Array.isArray(c.deleteMany)) {
|
|
164
|
+
c.deleteMany.forEach(where => {
|
|
165
|
+
delegate.deleteMany({ where });
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
delegate.deleteMany({ where: c.deleteMany });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
const _e = d, _f = field.name, _update = _e[_f], rest = __rest(_e, [typeof _f === "symbol" ? _f : _f + ""]);
|
|
173
|
+
d = rest;
|
|
165
174
|
}
|
|
166
175
|
}
|
|
167
176
|
if (c.increment) {
|
|
@@ -275,13 +284,13 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
275
284
|
const idFields = model.idFields || ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields);
|
|
276
285
|
if ((idFields === null || idFields === void 0 ? void 0 : idFields.length) > 1) {
|
|
277
286
|
if (child === idFields.join('_')) {
|
|
278
|
-
return shallowCompare(
|
|
287
|
+
return shallowCompare(item, filter);
|
|
279
288
|
}
|
|
280
289
|
}
|
|
281
290
|
if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
282
291
|
for (const uniqueField of model.uniqueFields) {
|
|
283
292
|
if (child === uniqueField.join('_')) {
|
|
284
|
-
return shallowCompare(
|
|
293
|
+
return shallowCompare(item, filter);
|
|
285
294
|
}
|
|
286
295
|
}
|
|
287
296
|
}
|
|
@@ -402,14 +411,20 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
402
411
|
return e;
|
|
403
412
|
});
|
|
404
413
|
data = Object.assign(Object.assign({}, data), { [prop]: newItems });
|
|
414
|
+
data = removeMultiFieldIds(model, data);
|
|
405
415
|
return data;
|
|
406
416
|
};
|
|
407
417
|
const create = args => {
|
|
408
418
|
const d = nestedUpdate(args, true, null);
|
|
409
419
|
data = Object.assign(Object.assign({}, data), { [prop]: [...data[prop], d] });
|
|
410
|
-
data =
|
|
411
|
-
|
|
412
|
-
|
|
420
|
+
data = removeMultiFieldIds(model, data);
|
|
421
|
+
let where = {};
|
|
422
|
+
for (const field of model.fields) {
|
|
423
|
+
if (field.default) {
|
|
424
|
+
where[field.name] = d[field.name];
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
return findOne(Object.assign({ where }, args));
|
|
413
428
|
};
|
|
414
429
|
const deleteMany = args => {
|
|
415
430
|
const model = cachedSchema.datamodel.models.find(model => {
|
|
@@ -484,8 +499,18 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
484
499
|
return newItem;
|
|
485
500
|
};
|
|
486
501
|
const update = (args) => {
|
|
487
|
-
|
|
488
|
-
|
|
502
|
+
let updatedItem;
|
|
503
|
+
const newItems = data[prop].map(e => {
|
|
504
|
+
if (matchFnc(args.where)(e)) {
|
|
505
|
+
let data = nestedUpdate(args, false, e);
|
|
506
|
+
updatedItem = Object.assign(Object.assign({}, e), data);
|
|
507
|
+
return updatedItem;
|
|
508
|
+
}
|
|
509
|
+
return e;
|
|
510
|
+
});
|
|
511
|
+
data = Object.assign(Object.assign({}, data), { [prop]: newItems });
|
|
512
|
+
data = removeMultiFieldIds(model, data);
|
|
513
|
+
return findOne(Object.assign(Object.assign({}, args), { where: updatedItem }));
|
|
489
514
|
};
|
|
490
515
|
return {
|
|
491
516
|
findOne,
|
|
@@ -529,7 +554,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
529
554
|
if (!data[c]) {
|
|
530
555
|
data = Object.assign(Object.assign({}, (data || {})), { [c]: [] });
|
|
531
556
|
}
|
|
532
|
-
data =
|
|
557
|
+
data = removeMultiFieldIds(model, data);
|
|
533
558
|
const objs = Delegate(c, model);
|
|
534
559
|
Object.keys(objs).forEach(fncName => {
|
|
535
560
|
client[c][fncName].mockImplementation(async (...params) => {
|