tests.ts•2.01 kB
import { copycat } from '@snaplet/copycat'
import { Providers } from '../../_utils/providers'
import testMatrix from './_matrix'
// @ts-ignore
import type $ from './generated/prisma/client'
declare let prisma: $.PrismaClient
// ported from: blog
testMatrix.setupTestSuite(
() => {
beforeEach(async () => {
await prisma.user.deleteMany()
await prisma.user.create({
data: {
id: copycat.uuid(1).replaceAll('-', '').slice(-24),
email: copycat.email(1),
age: 20,
},
})
await prisma.user.create({
data: {
id: copycat.uuid(2).replaceAll('-', '').slice(-24),
email: copycat.email(2),
age: 45,
},
})
await prisma.user.create({
data: {
id: copycat.uuid(3).replaceAll('-', '').slice(-24),
email: copycat.email(3),
age: 60,
},
})
await prisma.user.create({
data: {
id: copycat.uuid(4).replaceAll('-', '').slice(-24),
email: copycat.email(4),
age: 60,
},
})
})
test('aggregate', async () => {
const users = await prisma.$runCommandRaw({
aggregate: 'User',
pipeline: [{ $match: { age: 60 } }, { $project: { email: true, _id: false } }],
explain: false,
})
delete users?.['cursor']?.['ns'] // delete irrelevant field
expect(users).toMatchInlineSnapshot(`
{
"cursor": {
"firstBatch": [
{
"email": "Kyla_Crist96556@cancollaboration.biz",
},
{
"email": "Arielle.Oberbrunner94321@fulljuggernaut.org",
},
],
"id": 0,
},
"ok": 1,
}
`)
})
},
{
optOut: {
from: [Providers.SQLSERVER, Providers.MYSQL, Providers.POSTGRESQL, Providers.COCKROACHDB, Providers.SQLITE],
reason: 'This is a MongoDB specific feature',
},
},
)