vmagic
Version:
vMagic is a RESTFul framework for NodeJS applications.
139 lines (124 loc) • 3.99 kB
JavaScript
/*eslint no-underscore-dangle: ["error", { "allow": ["_getWhereSQL", "_getSelectSQL"] }]*/
"use strict";
import AppModel from "../../src/Model/AppModel.js";
import { expect } from "chai";
let appModel = null;
before(function () {
const config = {
dataSource: "MySQL",
host: "127.0.0.1",
port: 3306,
user: "root",
password: "<password>",
database: "db",
};
appModel = new AppModel(config);
});
describe("AppModel Tests.", function () {
it("Should validate the required field rules.", function (done) {
appModel.validate([
{
field1: {
rule: "notEmpty",
message: "Required field field1.",
},
},
{
field2: {
rule: "notEmpty",
message: "Required field field2.",
},
},
]);
try {
appModel._checkRules({ field1: "", field2: "test" });
} catch (err) {
expect("Required field field1.").to.equal(err.message);
done();
}
});
it("Should validate the maxLength rule.", function (done) {
appModel.validate([
{
description: {
rule: "maxLength",
value: 8,
message: "The description field requires the max length 8 characters.",
},
},
]);
try {
appModel._checkRules({ description: "123456789" });
} catch (err) {
expect("The description field requires the max length 8 characters.").to.equal(err.message);
done();
}
});
it("Should validate the minLength rule.", function (done) {
appModel.validate([
{
description: {
rule: "minLength",
value: 3,
message: "The description field requires the min length 3 characters.",
},
},
]);
try {
appModel._checkRules({ description: "12" });
} catch (err) {
expect("The description field requires the min length 3 characters.").to.equal(err.message);
done();
}
});
it("Should validate the minValue rule.", function (done) {
appModel.validate([
{
amount: {
rule: "minValue",
value: 1,
message: "The amount field cannot be less than 1.",
},
},
]);
try {
appModel._checkRules({ amount: 0 });
} catch (err) {
expect("The amount field cannot be less than 1.").to.equal(err.message);
done();
}
});
it("Should validate the minValue rule with array values.", function (done) {
appModel.validate([
{
amount: {
rule: "minValue",
value: 1,
message: "The amount field cannot be less than 1.",
},
},
]);
try {
appModel._checkRules([{ amount: 0 }, { amount: -1 }]);
} catch (err) {
expect("The amount field cannot be less than 1.").to.equal(err.message);
done();
}
});
it("Should validate the many rules from property.", function (done) {
appModel.validate([
{
amount: [
{ rule: "notEmpty", message: "Required field amount." },
{ rule: "minValue", value: 1, message: "Amount cannot be less than 1." },
],
},
]);
try {
appModel._checkRules({ amount: 0 });
} catch (err) {
expect("Amount cannot be less than 1.").to.equal(err.message);
done();
}
});
});