how to do unit test using drizzle ?

how to unit test this ? :

import { eq } from 'drizzle-orm';
import { db } from '../db/connection';
import { usersTable } from '../db/schema';
import { User, CreateUserData } from '../types';

export class UserService {
  async createUser(userData: CreateUserData): Promise<User> {
    // Check if user already exists
    const existingUser = await db
      .select({
        id: usersTable.id,
        firstName: usersTable.firstName,
        lastName: usersTable.lastName,
        email: usersTable.email,
        createdAt: usersTable.createdAt,
        updatedAt: usersTable.updatedAt,
        deletedAt: usersTable.deletedAt,
      })
      .from(usersTable)
      .where(eq(usersTable.id, userData.uid));

    if (existingUser.length > 0) {
      // User already exists, return the existing user
      const user = existingUser[0];
      if (!user) {
        throw new Error('Failed to retrieve existing user');
      }
      return user;
    }

    // Create new user
    const newUser = await db
      .insert(usersTable)
      .values({
        id: userData.uid,
        firstName: userData.firstName,
        lastName: userData.lastName,
        email: userData.email,
      })
      .returning({
        id: usersTable.id,
        firstName: usersTable.firstName,
        lastName: usersTable.lastName,
        email: usersTable.email,
        createdAt: usersTable.createdAt,
        updatedAt: usersTable.updatedAt,
        deletedAt: usersTable.deletedAt,
      });

    const createdUser = newUser[0];
    if (!createdUser) {
      throw new Error('Failed to create new user');
    }

    return createdUser;
  }
}
Was this page helpful?