Added support for deep selecting
This commit is contained in:
101
test/lib/prisma.test.ts
Normal file
101
test/lib/prisma.test.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
|
||||
import {it, expect} from '@jest/globals';
|
||||
import {whereAndSelect} from "@lib/prisma";
|
||||
|
||||
it('can decorate using whereAndSelect', async () => {
|
||||
whereAndSelect( (queryObj) => {
|
||||
expect(queryObj).toStrictEqual({ where: { id: 1 }, select: { example: true } });
|
||||
},
|
||||
{ id: 1 },
|
||||
[
|
||||
"example"
|
||||
])
|
||||
});
|
||||
|
||||
it('can do nested selects using . seperator', async () => {
|
||||
|
||||
whereAndSelect( (queryObj) => {
|
||||
expect(queryObj).toStrictEqual({
|
||||
where: {
|
||||
uid: 1,
|
||||
},
|
||||
select: {
|
||||
description: true,
|
||||
attendees: {
|
||||
select: {
|
||||
email: true,
|
||||
name: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
},
|
||||
{ uid: 1 },
|
||||
[
|
||||
"description",
|
||||
"attendees.email",
|
||||
"attendees.name",
|
||||
])
|
||||
})
|
||||
|
||||
it('can handle nesting deeply', async () => {
|
||||
whereAndSelect( (queryObj) => {
|
||||
expect(queryObj).toStrictEqual({
|
||||
where: {
|
||||
uid: 1,
|
||||
},
|
||||
select: {
|
||||
description: true,
|
||||
attendees: {
|
||||
select: {
|
||||
email: {
|
||||
select: {
|
||||
nested: true
|
||||
}
|
||||
},
|
||||
name: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
});
|
||||
},
|
||||
{ uid: 1 },
|
||||
[
|
||||
"description",
|
||||
"attendees.email.nested",
|
||||
"attendees.name",
|
||||
])
|
||||
});
|
||||
|
||||
it('can handle nesting multiple', async () => {
|
||||
whereAndSelect( (queryObj) => {
|
||||
expect(queryObj).toStrictEqual({
|
||||
where: {
|
||||
uid: 1,
|
||||
},
|
||||
select: {
|
||||
description: true,
|
||||
attendees: {
|
||||
select: {
|
||||
email: true,
|
||||
name: true,
|
||||
},
|
||||
},
|
||||
bookings: {
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
{ uid: 1 },
|
||||
[
|
||||
"description",
|
||||
"attendees.email",
|
||||
"attendees.name",
|
||||
"bookings.id",
|
||||
"bookings.name",
|
||||
])
|
||||
});
|
||||
Reference in New Issue
Block a user