hmm: Request Error

Beitrag lesen

hm, ok, dann schreibe ich am besten erstmal einen passenden unit test, so wie ich es auch in java tun würde.

hier die klasse die ich testen und aus dem test heraus debuggen möchte:

/**
 *  Datenbank Manager.
 */
function DbManager(dbPfadName) {
    
    var dbRef = dbPfadName + ".db";
    const sqlite3 = require('sqlite3').verbose();
    
    var SQL_CREATE_TABLE = "create table if not exists ? (produkt1 integer, produkt2 integer, produkt3 integer);";
    var SQL_INSERT_DATA = "insert into ? (produkt1, produkt2, produkt3) values (?1, ?2, ?3);";
    var SQL_SELECT_DATA = "select * from ?;";
    var SQL_SELECT_USER_MITARBEITER_ID = "select user_id, mitarbeiter_id from user, mitarbeiter where user.email = ?email and mitarbeiter.name = ?name;";
    var SQL_INSERT_MITARBEITER = "insert into mitarbeiter (name) select ?name where not exists (select 1 from mitarbeiter where name = ?name );";
    var SQL_INSERT_USER_MITARBEITER = "insert into user_mitarbeiter (user_id, mitarbeiter_id) select ?user_id, ?m_id where not exists (select 1 from user_mitarbeiter where user_id = ?user_id and mitarbeiter_id = ?m_id);";
    var SQL_INSERT_SKILL = "insert into mitarbeiter_skill (mitarbeiter_id, skill, subskill, nivau) select ?m_id, ?skill, ?subskill, ?nivau where not exists (select 1 from mitarbeiter_skill where mitarbeiter_id = ?m_id and skill = ?skill and subskill = ?subskill);";
    var SQL_REPLACE_SKILL = "replace into mitarbeiter_skill (mitarbeiter_id, skill, subskill, nivau) select ?m_id, ?skill, ?subskill, ?nivau where exists (select 1 from mitarbeiter_skill where mitarbeiter_id = ?m_id and skill = ?skill and subskill = ?subskill);";
    
    /**
     *  Sollte es keine Tabelle Namens tableName in der DB geben,
     *  so wird durch diese Funktion eine solche erstellt.
     */
    this.createTable = function(tableName) {
        var db = new sqlite3.Database(dbRef);
        var statment = SQL_CREATE_TABLE.replace("?", tableName);
        db.run(statment);
        db.close();
    }
    
    /**
     *  Generiert Querys die fuer das hinzufuegen von Daten notwendig sind
     *  und fuehrt diese aus.
     */
    this.generateOneUpdate = function(email, data) {
        var db = new sqlite3.Database(dbRef);
        
        var statment = SQL_INSERT_MITARBEITER.replace(/\?name/g, "'" + data.name + "'");
        db.run(statment);
        
        function callback(user_id, m_id, data) {
            var dbLokal = new sqlite3.Database(dbRef);
            var statmentLokal = SQL_INSERT_USER_MITARBEITER.replace(/\?user_id/g, user_id);
            statmentLokal = statmentLokal.replace(/\?m_id/g, m_id);
            dbLokal.run(statmentLokal);
            statmentLokal = SQL_INSERT_SKILL.replace(/\?m_id/g, m_id);
            statmentLokal = statmentLokal.replace(/\?skill/g, "'" + data.skill + "'");
            statmentLokal = statmentLokal.replace(/\?subskill/g, "'" + data.subskill + "'");
            statmentLokal = statmentLokal.replace(/\?nivau/g, "'" + data.nivau + "'");
            dbLokal.run(statmentLokal);
            statmentLokal = SQL_REPLACE_SKILL.replace(/\?m_id/g, m_id);
            statmentLokal = statmentLokal.replace(/\?skill/g, "'" + data.skill + "'");
            statmentLokal = statmentLokal.replace(/\?subskill/g, "'" + data.subskill + "'");
            statmentLokal = statmentLokal.replace(/\?nivau/g, "'" + data.nivau + "'");
            dbLokal.run(statmentLokal);
            dbLokal.close();
        }
        
        statment = SQL_SELECT_USER_MITARBEITER_ID.replace(/\?email/g, "'" + email + "'");
        statment = statment.replace(/\?name/g, "'" + data.name + "'");
        
        var d = db.all(statment, function(err, rows) {
            var lastIndex = rows.length - 1;
            callback(rows[lastIndex].user_id, rows[lastIndex].mitarbeiter_id, data);
        });
        
        db.close();
    }
    
    /**
     *  Schreibt die Daten p1, p2, p3 in die Tabelle tableName.
     */
    this.insertData = function(tableName, p1, p2, p3) {
        var db = new sqlite3.Database(dbRef);
        var statment = SQL_INSERT_DATA.replace("?", tableName);
        statment = statment.replace("?1", p1);
        statment = statment.replace("?2", p2);
        statment = statment.replace("?3", p3);
        db.run(statment);
        db.close();
    }
    
    /**
     *  Fuehrt die Insert Query aus.
     */
    this.insertDataWithQuery = function(insertQuery) {
        var db = new sqlite3.Database(dbRef);
        db.run(insertQuery);
        db.close();
    }
    
    /**
     *  Fuehrt die Insert Query aus.
     */
    this.insertDataWithQuerys = function(insertQuerys) {
        var db = new sqlite3.Database(dbRef);
        for(var i = 0; i < insertQuerys.length; i++) {
            db.run(insertQuerys[i]);
        }
        db.close();
    }
    
    /**
     *  Fuehrt das Delete Statment aus.
     */
    this.deleteStatment = function(statment) {
        var db = new sqlite3.Database(dbRef);
        db.run(statment);
        db.close();
    }
    
    /**
     *  Uebergibt alle Daten aus der Tabelle tableName an
     *  die Callback Funktion dataProcess.
     */
    this.selectData = function(tableName, dataProcess) {
        var db = new sqlite3.Database(dbRef);
        var statment = SQL_SELECT_DATA.replace("?", tableName);
        var data = db.all(statment, function(err, rows) {
            dataProcess(rows);
        });
        db.close();
    }
    
    /**
     *  Uebergibt alle Daten aus der Tabelle tableName an
     *  die Callback Funktion dataProcess.
     */
    this.selectDataWithParam = function(query, dataProcess, param) {
        var db = new sqlite3.Database(dbRef);
        var data = db.all(query, function(err, rows) {
            dataProcess(rows, param);
        });
        db.close();
    }
    
    /**
     *  Uebergibt alle Daten die sich aus der Query ergeben an
     *  die Callback Funktion dataProcess.
     */
    this.selectDataWithQuery = function(query, dataProcess) {
        var db = new sqlite3.Database(dbRef);
        var data = db.all(query, function(err, rows) {
            dataProcess(rows);
        });
        db.close();
    }
}

module.exports = DbManager;

welches unit test framework nimmt man für sowas? qunit? unit js? jasmine? ... es gibt extrem viele im netz, was ist der standart?