collinbxx
collinbxx
DTDrizzle Team
Created by fermentfan on 7/30/2023 in #help
Mocking Drizzle instance
I have a User creation function like this that uses the returning() function. I want to mock test it but don't know what to pass in below.
public async createUser(userData: CreateUserDto): Promise<User> {
if (isEmpty(userData)) throw new HttpException(400, "You're not userData");

const findUser: User = await DB.query.users.findFirst({
where: eq(users.email, userData.email),
});

if (findUser)
throw new HttpException(
409,
`You're email ${userData.email} already exists`,
);

const hashedPassword = await hash(userData.password, 10);
const createdUser: User = (
await DB.insert(users)
.values({
...userData,
password: hashedPassword,
})
.returning()
)[0];

return createdUser;
}
public async createUser(userData: CreateUserDto): Promise<User> {
if (isEmpty(userData)) throw new HttpException(400, "You're not userData");

const findUser: User = await DB.query.users.findFirst({
where: eq(users.email, userData.email),
});

if (findUser)
throw new HttpException(
409,
`You're email ${userData.email} already exists`,
);

const hashedPassword = await hash(userData.password, 10);
const createdUser: User = (
await DB.insert(users)
.values({
...userData,
password: hashedPassword,
})
.returning()
)[0];

return createdUser;
}
describe('[POST] /users', () => {
it('response Create user', async () => {
const userData: CreateUserDto = {
password: 'q1w2e3r4!',
};

const usersRoute = new UserRoute();

drizzleMock.query.users.findFirst.mockResolvedValueOnce(null);
drizzleMock.insert.mockReturnValueOnce(???);

const app = new App([usersRoute]);
return request(app.getServer())
.post(`${usersRoute.path}`)
.set('Authorization', `Bearer ${tokenData.token}`)
.send(userData)
.expect(201);
});
});
describe('[POST] /users', () => {
it('response Create user', async () => {
const userData: CreateUserDto = {
password: 'q1w2e3r4!',
};

const usersRoute = new UserRoute();

drizzleMock.query.users.findFirst.mockResolvedValueOnce(null);
drizzleMock.insert.mockReturnValueOnce(???);

const app = new App([usersRoute]);
return request(app.getServer())
.post(`${usersRoute.path}`)
.set('Authorization', `Bearer ${tokenData.token}`)
.send(userData)
.expect(201);
});
});
22 replies
DTDrizzle Team
Created by fermentfan on 7/30/2023 in #help
Mocking Drizzle instance
@jakeleventhal How can I mock with select, insert and update?
22 replies