Using mock sinon to test mysql on node

Viewed 708

I have a mysql table that I am trying to see if the users get saved or not by testing it using sinon.js mock.

My user.js model has the following code.

saveUser = (userinfo) => new Promise((resolve,reject)=>{
    var salt = bcrypt.genSaltSync(10);
    var hash = bcrypt.hashSync(userinfo.password, salt);
    userinfo.password = hash;
    userinfo.token = jwt.sign({email : userinfo.email},'secretkeyyo');
    db.query('INSERT INTO user SET ?',userinfo,function(error,results,fields){
        if(error){
            reject('Could not save users to mysql');
        }else{
            resolve(results.insertId);
        }
    })
});

Normally the userinfo has this fields : Owner , firstname lastname email password token which gets saved into the user table after getting hashed

I have a test file that I am trying to run but I am not sure on how to proceed

var expect = require('chai').expect;
var faker = require('faker');
const request = require('supertest');
const should = require('should');
const sinon = require('sinon');
const helper = require('../../models/user');

it('should mock insert statement',(done)=>{
    var mock;
    mock = sinon.mock(require('mysql'))
    mock.expects(saveUser).with(queryString, queryParams).yields(null, rows);
});

Not sure on how to use the mocking to test the query. Uncertain about queryString and queryParams

0 Answers
Related