mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-02-22 05:01:23 -05:00
108 lines
2.9 KiB
TypeScript
108 lines
2.9 KiB
TypeScript
import { defaultUserEmail, setupServer } from '../../jest.utils';
|
|
import { createUserInput } from '../utils/create-user';
|
|
|
|
describe('prisma client extensions', () => {
|
|
setupServer();
|
|
|
|
beforeEach(async () => {
|
|
await fastifyTestInstance.prisma.user.deleteMany({
|
|
where: { email: defaultUserEmail }
|
|
});
|
|
});
|
|
|
|
afterAll(async () => {
|
|
await fastifyTestInstance.prisma.user.deleteMany({
|
|
where: { email: defaultUserEmail }
|
|
});
|
|
});
|
|
|
|
describe('updateCount', () => {
|
|
it('should default to 0', async () => {
|
|
const user = await fastifyTestInstance.prisma.user.create({
|
|
data: createUserInput(defaultUserEmail)
|
|
});
|
|
|
|
expect(user).toMatchObject({
|
|
updateCount: 0
|
|
});
|
|
});
|
|
|
|
it('should increment by one for updates and creates', async () => {
|
|
const user = await fastifyTestInstance.prisma.user.create({
|
|
data: createUserInput(defaultUserEmail)
|
|
});
|
|
|
|
const updateUser = await fastifyTestInstance.prisma.user.update({
|
|
where: { id: user.id },
|
|
data: { username: 'any-change' }
|
|
});
|
|
|
|
expect(updateUser).toMatchObject({
|
|
username: 'any-change',
|
|
updateCount: 1
|
|
});
|
|
|
|
await fastifyTestInstance.prisma.user.updateMany({
|
|
where: { id: user.id },
|
|
// Even no change to values updates the updateCount
|
|
data: { username: 'any-change' }
|
|
});
|
|
|
|
const updateManyUser = await fastifyTestInstance.prisma.user.findUnique({
|
|
where: { id: user.id }
|
|
});
|
|
|
|
expect(updateManyUser).toMatchObject({
|
|
username: 'any-change',
|
|
updateCount: 2
|
|
});
|
|
|
|
const upsertUser = await fastifyTestInstance.prisma.user.upsert({
|
|
where: { id: user.id },
|
|
create: createUserInput(defaultUserEmail),
|
|
update: { username: 'upser-user' }
|
|
});
|
|
|
|
expect(upsertUser).toMatchObject({
|
|
username: 'upser-user',
|
|
updateCount: 3
|
|
});
|
|
});
|
|
|
|
it("should not increment for 'find' queries", async () => {
|
|
const user = await fastifyTestInstance.prisma.user.create({
|
|
data: createUserInput(defaultUserEmail)
|
|
});
|
|
|
|
const findUniqueUser = await fastifyTestInstance.prisma.user.findUnique({
|
|
where: { id: user.id }
|
|
});
|
|
|
|
expect(findUniqueUser).toMatchObject({
|
|
updateCount: 0
|
|
});
|
|
|
|
const findManyUsers = await fastifyTestInstance.prisma.user.findMany();
|
|
|
|
expect(findManyUsers).toHaveLength(1);
|
|
expect(findManyUsers[0]).toMatchObject({
|
|
updateCount: 0
|
|
});
|
|
|
|
const findFirstUser = await fastifyTestInstance.prisma.user.findFirst();
|
|
|
|
expect(findFirstUser).toMatchObject({
|
|
updateCount: 0
|
|
});
|
|
|
|
const findRawUser = await fastifyTestInstance.prisma.user.findRaw({
|
|
filter: { email: defaultUserEmail }
|
|
});
|
|
|
|
expect(findRawUser[0]).toMatchObject({
|
|
updateCount: 0
|
|
});
|
|
});
|
|
});
|
|
});
|