I want to mock function .save() from sequelize with jest. But i found a error with my code in file user.services.test.js .Is there anyone can help me ?
The error said : result.save() is not a function.
user.services.test.js
it('Should update user that input by ', async () => {
let result;
let data ;
let dataInput = {id : 1, username : "teguh", userPassword : "apake"};
user.findByPk = jest.fn(() => {
return {username : "teguh", userPassword : "iyah", save : mockFuntion()};
});
data = user.findByPk();
data.userPassword = dataInput.userPassword;
data.save = jest.fn(() => {return {saved:true}});
result = await service.updateUser(dataInput);
expect(data.save).toBeCalledTimes(1);
expect(data.userPassword).toEqual(dataInput.userPassword);
});
user.services.js
async updateUser(user){
let result;
try {
const pass = bcrypt.hashSync(user.userPassword, 9);
// result = await this.user.update({userPassword : pass}, {
// where : {username : user.username}
// });
result = await this.user.findByPk(user.id);
if(result) {
result.userPassword = pass;
result.save();
return result;
}
} catch (e) {
logEvent.emit('APP_ERROR', {
logTitle : '[UPDATE-USER-FAILED]',
logMessage : e
});
throw new Error(e);
}
}