102 lines
2.0 KiB
TypeScript
102 lines
2.0 KiB
TypeScript
|
|
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",
|
|
])
|
|
});
|