1 | var assert = require('assert'),
|
2 | describe = require('Jody').describe,
|
3 | Model = require('../lib/index');
|
4 |
|
5 |
|
6 | describe("Model Validations", function (spec) {
|
7 |
|
8 | spec.beforeAll(function (done) {
|
9 | var Mailer = Model.define("Mailer", {
|
10 | name: String,
|
11 | email: String
|
12 | });
|
13 |
|
14 | Model.define("MailerZ", {
|
15 | name: String,
|
16 | email: String
|
17 | });
|
18 |
|
19 |
|
20 | Model.load(function () {});
|
21 | done();
|
22 | });
|
23 |
|
24 | spec.it("Should send error to callback length of email property to small", function (async) {
|
25 | var Mailer = Model('Mailer');
|
26 |
|
27 | Mailer.validate(function (check, item) {
|
28 | check(item.email).isEmail();
|
29 | check(item.name).len(0,30);
|
30 | });
|
31 |
|
32 | var mail1 = Mailer.create({name: "Garren", email: "Boom"});
|
33 |
|
34 | mail1.save(function (err, saved) {
|
35 |
|
36 | err[0].should().beEqual("Invalid email");
|
37 | assert.equal(saved, undefined);
|
38 | });
|
39 |
|
40 | });
|
41 |
|
42 | spec.it("Should not save model to db if validation fails", function (async) {
|
43 | var Mailer = Model('Mailer');
|
44 |
|
45 | Mailer.validate(function (check, item) {
|
46 | check(item.email).isEmail();
|
47 | check(item.name).len(0,30);
|
48 | });
|
49 |
|
50 | var mail1 = Mailer.create({name: "Harris", email: "Boom"});
|
51 |
|
52 | mail1.save(async(function (err, saved) {
|
53 | Mailer.where("name", "Harris", async(function (err, mailers) {
|
54 | err.error.should().beEqual("not_found");
|
55 |
|
56 | }));
|
57 | }));
|
58 | });
|
59 |
|
60 | spec.it("should still save if not validation method defined", function (async) {
|
61 | var MailerZ = Model("MailerZ");
|
62 |
|
63 | var mailZ = MailerZ.create({name: "Magnus", email: "Boom"});
|
64 | console.log("validation spec called");
|
65 |
|
66 | mailZ.save(async(function (err, saved) {
|
67 | if (err) throw err;
|
68 | MailerZ.where("name", "Magnus", async(function (err, mailers) {
|
69 | mailers.length.should().beEqual(1);
|
70 | }));
|
71 | }));
|
72 | });
|
73 |
|
74 | spec.it("Should return list of validation errors", function (async) {
|
75 |
|
76 | var Mailer = Model('Mailer');
|
77 | Mailer.validate(function (check, item) {
|
78 | check(item.name).len(10,30);
|
79 | check(item.email).isEmail();
|
80 |
|
81 | });
|
82 |
|
83 | var mail1 = Mailer.create({name: "Harris", email: "Boom"});
|
84 | mail1.save(function (err, item) {
|
85 |
|
86 | err.length.should().beEqual(2);
|
87 | });
|
88 |
|
89 | });
|
90 |
|
91 | spec.it("Should return an array of error if exception occurs in validation", function () {
|
92 | var Mailer = Model('Mailer');
|
93 | Mailer.validate(function (check, item) {
|
94 | throw "Weird error here"
|
95 | });
|
96 |
|
97 | var mail1 = Mailer.create({name: "Harris", email: "Boom"});
|
98 | mail1.save(function (err, item) {
|
99 |
|
100 | err.length.should().beEqual(1);
|
101 | err[0].should().beEqual("Weird error here");
|
102 | });
|
103 |
|
104 | });
|
105 |
|
106 | });
|
107 |
|
108 |
|