vendredi 18 décembre 2015

How can I unit test this node.js module using mocha and chai?

I have this file containing the following code which is the database layer of my api. It is externally dependent on SQL Server to fetch the data.

var sql = require('mssql');
var async = require('async');

module.exports = {
    getDetails: function(number, callback) {

    async.parallel({
            general: function(callback) {
                getGeneral(number, callback);
            },
            preferences: function(callback) {
                getPref(number, callback);
            }
        },
        function(err, results) {
            if (err) {
                logger.error(err);
                throw err;
            }
            callback(results);
        });
}
};

function getGeneral(number, callback) {
    var mainconnection = new sql.Connection(dbCredentials[1].generalDBConfig, function(err) {
        var request = new sql.Request(mainconnection);
        request.input('number', sql.BigInt, number);
        request.execute('[number].[genral_get]', function(err, recordsets) {
            if (err) {
                logger.error(err);
            }
            var gen = {};
            var spResult = recordsets[0];
            if (spResult[0] != null) {
                spResult.forEach(function(record) {
                    var test = {};
                    gen[record.genCode] = record.genValue;
                });

                callback(null, gen);
            } else {
                callback(null, null);
            }

        });

    });
}

function getPref(number, callback) {
    var mainconnection = new sql.Connection(dbCredentials[0].prefDBConfig, function(err) {
        var request = new sql.Request(mainconnection);
        request.input('number', sql.BigInt, number);
        request.execute('[number].[pref_get]', function(err, recordsets) {
            if (err) {
                logger.error(err);
            }
            var spResult = recordsets[0];
            if (spResult[0] != null) {
                callback(null, spResult[0]);
            } else {
                callback(null, null);
            }

        });

    });
}

The database layer return this JSON format data:

{
                        "general": {
                            "number": "72720604"
                            "title": "Mr  ",
                            "buildingNameNumber": null,
                            "subBuildingName": null,
                            "streetName": null,
                            "postalTown": null,
                            "county": null
                        },
                        "pref": {
                            "UseAccessibilitySite": "00000",
                            "IntroductorySource": "75"
                        }
                    };

As I am new to unit testing, I don't know how to start about writing unit tests for this module even though choosing mocha with chai as my unit testing framework. Any kind of suggestions or help is appreciated...

Aucun commentaire:

Enregistrer un commentaire