prisma-mock 0.0.18 → 0.0.21
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 +63 -9
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -33,17 +33,26 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
33
33
|
return true;
|
|
34
34
|
};
|
|
35
35
|
const checkIds = (model, data) => {
|
|
36
|
-
var _a;
|
|
36
|
+
var _a, _b;
|
|
37
37
|
const c = getCamelCase(model.name);
|
|
38
38
|
const idFields = model.idFields || ((_a = model.primaryKey) === null || _a === void 0 ? void 0 : _a.fields);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const id = idFields.join('_');
|
|
39
|
+
const checkId = (ids) => {
|
|
40
|
+
const id = ids.join('_');
|
|
42
41
|
data = Object.assign(Object.assign({}, data), { [c]: data[c].map(item => {
|
|
43
|
-
|
|
42
|
+
const _a = item, _b = id, idVal = _a[_b], rest = __rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
|
|
43
|
+
return Object.assign(Object.assign(Object.assign({}, idVal), { [id]: ids.reduce((prev, field) => {
|
|
44
44
|
return Object.assign(Object.assign({}, prev), { [field]: item[field] });
|
|
45
|
-
}, {}) });
|
|
45
|
+
}, {}) }), item);
|
|
46
46
|
}) });
|
|
47
|
+
};
|
|
48
|
+
// console.log("model.name", model.name)
|
|
49
|
+
if ((idFields === null || idFields === void 0 ? void 0 : idFields.length) > 1) {
|
|
50
|
+
checkId(idFields);
|
|
51
|
+
}
|
|
52
|
+
if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
53
|
+
for (const uniqueField of model.uniqueFields) {
|
|
54
|
+
checkId(uniqueField);
|
|
55
|
+
}
|
|
47
56
|
}
|
|
48
57
|
return data;
|
|
49
58
|
};
|
|
@@ -62,7 +71,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
62
71
|
const joinmodel = cachedSchema.datamodel.models.find(model => {
|
|
63
72
|
return model.name === field.type;
|
|
64
73
|
});
|
|
65
|
-
const joinfield = joinmodel.fields.find(f => {
|
|
74
|
+
const joinfield = joinmodel === null || joinmodel === void 0 ? void 0 : joinmodel.fields.find(f => {
|
|
66
75
|
return f.relationName === field.relationName;
|
|
67
76
|
});
|
|
68
77
|
return joinfield;
|
|
@@ -191,7 +200,7 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
191
200
|
return d;
|
|
192
201
|
};
|
|
193
202
|
const matchItem = (child, item, where) => {
|
|
194
|
-
var _a;
|
|
203
|
+
var _a, _b;
|
|
195
204
|
const val = item[child];
|
|
196
205
|
const filter = where[child];
|
|
197
206
|
if (child === "OR") {
|
|
@@ -256,6 +265,13 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
256
265
|
return shallowCompare(val, filter);
|
|
257
266
|
}
|
|
258
267
|
}
|
|
268
|
+
if (((_b = model.uniqueFields) === null || _b === void 0 ? void 0 : _b.length) > 0) {
|
|
269
|
+
for (const uniqueField of model.uniqueFields) {
|
|
270
|
+
if (child === uniqueField.join('_')) {
|
|
271
|
+
return shallowCompare(val, filter);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
259
275
|
if (val === undefined) {
|
|
260
276
|
return false;
|
|
261
277
|
}
|
|
@@ -383,7 +399,45 @@ const createPrismaMock = async (data = {}, pathToSchema, client = (0, jest_mock_
|
|
|
383
399
|
return findOne(Object.assign({ where: { id: d.id } }, args));
|
|
384
400
|
};
|
|
385
401
|
const deleteMany = args => {
|
|
386
|
-
|
|
402
|
+
const relations = [];
|
|
403
|
+
const model = cachedSchema.datamodel.models.find(model => {
|
|
404
|
+
return getCamelCase(model.name) === prop;
|
|
405
|
+
});
|
|
406
|
+
const deleted = [];
|
|
407
|
+
data = Object.assign(Object.assign({}, data), { [prop]: data[prop].filter(e => {
|
|
408
|
+
const shouldDelete = matchFnc(args === null || args === void 0 ? void 0 : args.where)(e);
|
|
409
|
+
if (shouldDelete) {
|
|
410
|
+
deleted.push(e);
|
|
411
|
+
}
|
|
412
|
+
return !shouldDelete;
|
|
413
|
+
}) });
|
|
414
|
+
// Referential Actions
|
|
415
|
+
deleted.forEach(item => {
|
|
416
|
+
model.fields.forEach(field => {
|
|
417
|
+
const joinfield = getJoinField(field);
|
|
418
|
+
if (!joinfield)
|
|
419
|
+
return;
|
|
420
|
+
const delegate = Delegate(getCamelCase(field.type), model);
|
|
421
|
+
if (joinfield.relationOnDelete === "SetNull") {
|
|
422
|
+
delegate.update({
|
|
423
|
+
where: {
|
|
424
|
+
[joinfield.relationFromFields[0]]: item[joinfield.relationToFields[0]],
|
|
425
|
+
},
|
|
426
|
+
data: {
|
|
427
|
+
[joinfield.relationFromFields[0]]: null,
|
|
428
|
+
}
|
|
429
|
+
});
|
|
430
|
+
}
|
|
431
|
+
else if (joinfield.relationOnDelete === "Cascade") {
|
|
432
|
+
delegate.delete({
|
|
433
|
+
where: {
|
|
434
|
+
[joinfield.relationFromFields[0]]: item[joinfield.relationToFields[0]],
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
});
|
|
439
|
+
});
|
|
440
|
+
return deleted;
|
|
387
441
|
};
|
|
388
442
|
const includes = args => item => {
|
|
389
443
|
if ((!(args === null || args === void 0 ? void 0 : args.include) && !(args === null || args === void 0 ? void 0 : args.select)) || !item)
|