tests.ts•2.75 kB
import { permutations } from '../../../../../helpers/blaze/permutations'
import testMatrix from './_matrix'
// @ts-ignore
import type { PrismaClient } from './generated/prisma/client'
declare let prisma: PrismaClient
// https://github.com/prisma/prisma/issues/9248
testMatrix.setupTestSuite(
() => {
async function expectCreateToSucceed(words: string[]) {
const result = await prisma.post.create({
data: { words },
})
expect(result.words).toEqual(words)
const readBack = await prisma.post.findUnique({
where: {
id: result.id,
},
})
expect(readBack?.words).toEqual(words)
}
test('create with two strings', async () => {
await expectCreateToSucceed(['hello', 'world'])
})
test('create with a string that looks like a date', async () => {
await expectCreateToSucceed(['2022-09-06T16:31:16.269Z'])
await expectCreateToSucceed(['2022-09-06T16:31:16.269Z', '2021-09-14T00:00:00.000Z'])
})
test('create with a string and a string that looks like a date', async () => {
await expectCreateToSucceed(['hello', '2022-09-06T16:31:16.269Z'])
await expectCreateToSucceed(['2022-09-06T16:31:16.269Z', 'hello'])
})
test('create a string that looks like a uuid', async () => {
await expectCreateToSucceed(['4464dcac-809d-4f01-8642-81d637cd7cdd'])
await expectCreateToSucceed(['4464dcac-809d-4f01-8642-81d637cd7cdd', '2690FE4B-BB1C-4278-8022-9C029C2248C8'])
})
test('create with a string and a string that looks like a uuid', async () => {
// Check both lowercase and uppercase UUID in different order
await expectCreateToSucceed(['hello', '4464dcac-809d-4f01-8642-81d637cd7cdd'])
await expectCreateToSucceed(['2690FE4B-BB1C-4278-8022-9C029C2248C8', 'world'])
})
test('create with a date and uuid', async () => {
await expectCreateToSucceed(['2022-09-06T16:31:16.269Z', '4464dcac-809d-4f01-8642-81d637cd7cdd'])
await expectCreateToSucceed(['2690FE4B-BB1C-4278-8022-9C029C2248C8', '2021-09-14T00:00:00.000Z'])
})
test('create with a string, date and uuid', async () => {
const words = ['hello', '2022-09-06T16:31:16.269Z', '4464dcac-809d-4f01-8642-81d637cd7cdd']
// Check all possible permutations because there are six possible GraphQL
// types that the validator can infer: `List<String | DateTime | UUID>`,
// `List<DateTime | String | UUID` and so on.
for (const permutedWords of permutations(words)) {
await expectCreateToSucceed(permutedWords)
}
})
},
{
optOut: {
from: ['sqlite', 'mysql', 'sqlserver'],
reason: 'Scalar lists are not supported in all databases',
},
},
)