Skip to content
Snippets Groups Projects
persondao.test.js 2.92 KiB
Newer Older
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
var mysql = require("mysql");

const PersonDao = require("./persondao.js");
const runsqlfile = require("./runsqlfile.js");

// GitLab CI Pool
var pool = mysql.createPool({
  connectionLimit: 1,
  host: "mysql.stud.iie.ntnu.no",
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
  user: "root",
  password: "secret",
  database: "supertestdb",
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
  debug: false,
  multipleStatements: true
});

let personDao = new PersonDao(pool);

beforeAll(done => {
  runsqlfile("dao/create_tables.sql", pool, () => {
    runsqlfile("dao/create_testdata.sql", pool, done);
  });
});

afterAll(() => {
  pool.end();
});

test("get one person from db", done => {
  function callback(status, data) {
    console.log(
      "Test callback: status=" + status + ", data=" + JSON.stringify(data)
    );
    expect(data.length).toBe(1);
    expect(data[0].navn).toBe("Hei Sveisen");
    done();
  }

  personDao.getOne(1, callback);
});

test("get unknown person from db", done => {
  function callback(status, data) {
    console.log(
      "Test callback: status=" + status + ", data=" + JSON.stringify(data)
    );
    expect(data.length).toBe(0);
    done();
  }

  personDao.getOne(0, callback);
});

test("add person to db", done => {
  function callback(status, data) {
    console.log(
      "Test callback: status=" + status + ", data=" + JSON.stringify(data)
    );
    expect(data.affectedRows).toBeGreaterThanOrEqual(1);
    done();
  }

  personDao.createOne(
    { navn: "Nils Nilsen", alder: 34, adresse: "Gata 3" },
    callback
  );
});

test("update person in db", done => {
    function callback(status, data) {
        console.log(
            "Test callback: status=" + status + ", data=" + JSON.stringify(data)
        );
        function callback2(status, data) {
            console.log(
                "Test callback: status=" + status + ", data=" + JSON.stringify(data)
            );
            expect(data.length).toBe(1);
            expect(data[0].navn).toBe("Tale Leif");
            done();
        }

        personDao.getOne(2, callback2);
    }

    personDao.updateOne(
        { navn: "Tale Leif", alder: 57, adresse: "Veien 5", id: 2 },
        callback
    );
});

test("delete person in db", done => {
    function callback(status, data) {
        console.log(
            "Test callback: status=" + status + ", data.length=" + data.length
        );
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
        expect(data.affectedRows).toBeGreaterThanOrEqual(1);
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
        done();
    }

    personDao.deleteOne(1, callback);
});

test("get all persons from db", done => {
  function callback(status, data) {
    console.log(
      "Test callback: status=" + status + ", data.length=" + data.length
    );
    expect(data.length).toBeGreaterThanOrEqual(2);
    done();
  }

  personDao.getAll(callback);
});
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
test("fail this should do ho", done => {
Eyvind Nikolai Holt's avatar
Eyvind Nikolai Holt committed
    function callback(status, data) {
        console.log(
            "Test callback: status=" + status + ", data=" + JSON.stringify(data)
        );
        expect(data).toBe(1);
        done();
    }
    callback(100, 2)
});