tests.ts•1.89 kB
import { copycat } from '@snaplet/copycat'
import testMatrix from './_matrix'
// @ts-ignore
import type { PrismaClient } from './generated/prisma/client'
declare let prisma: PrismaClient
testMatrix.setupTestSuite(() => {
beforeEach(async () => {
await prisma.user.deleteMany({})
await prisma.user.create({
data: {
email: copycat.email(1),
age: 20,
credit: 10.0,
},
})
})
test('atomic increment', async () => {
const result = await prisma.user.update({
where: {
email: copycat.email(1),
},
data: {
credit: {
increment: 1.5,
},
age: {
increment: 1,
},
},
})
expect(result.credit).toBe(11.5)
expect(result.age).toBe(21)
})
test('atomic decrement', async () => {
const result = await prisma.user.update({
where: {
email: copycat.email(1),
},
data: {
credit: {
decrement: 1.5,
},
age: {
decrement: 1,
},
},
})
expect(result.credit).toBe(8.5)
expect(result.age).toBe(19)
})
test('atomic increment with negative value', async () => {
const result = await prisma.user.update({
where: {
email: copycat.email(1),
},
data: {
credit: {
increment: -1.5,
},
age: {
increment: -1,
},
},
})
expect(result.credit).toBe(8.5)
expect(result.age).toBe(19)
})
test('atomic decrement with negative', async () => {
const result = await prisma.user.update({
where: {
email: copycat.email(1),
},
data: {
credit: {
decrement: -1.5,
},
age: {
decrement: -1,
},
},
})
expect(result.credit).toBe(11.5)
expect(result.age).toBe(21)
})
})