magic-models
Version:
A simple, free software magical ORM.
115 lines (103 loc) • 6.64 kB
JavaScript
exports.create = {
badTests: {
noObject: function(test) {
db.models.User.create(function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Field `login` is required.', 'Password not strong enough']}, 'This test should fail');
test.done();
});
},
EmptyObject: function(test) {
db.models.User.create({}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Field `login` is required.', 'Password not strong enough']}, 'This test should fail');
test.done();
});
},
invalidValidations: {
is: function(test) {
db.models.User.create({login: '$$$$$$$$$$$$'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Password not strong enough', 'Rule "is" for field `login` has not been successfully validated.']}, 'This test should fail');
test.done();
});
},
len: function(test) {
db.models.User.create({login: 'foobarfoobarfoobarfoobarfoobarfoobar'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Password not strong enough', 'Rule "len" for field `login` has not been successfully validated.', 'Rule "is" for field `login` has not been successfully validated.']}, 'This test should fail');
test.done();
});
},
notIn: function(test) {
db.models.User.create({login: 'root'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Password not strong enough', 'Rule "notIn" for field `login` has not been successfully validated.']}, 'This test should fail');
test.done();
});
},
required: function(test) {
db.models.User.create({login: undefined}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Field `login` is required.', 'Password not strong enough']}, 'This test should fail');
test.done();
});
},
minLen: function(test) {
db.models.User.create({login: undefined, password: 'foobar2'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Field `login` is required.', 'Password not strong enough']}, 'This test should fail');
test.done();
});
},
maxLen: function(test) {
db.models.User.create({login: undefined, password: 'foobar2', mail: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Field `login` is required.', 'Password not strong enough', 'Rule "maxLen" for field `mail` has not been successfully validated.']}, 'This test should fail');
test.done();
});
}
}
},
goodTests: {
newUser: function(test) {
db.models.User.create({login: 'foobar', password: 'foobar42'}, function(e, r, i) {
test.equal(e, undefined, 'An error occured');
test.deepEqual(i, {insertId: 1, affectedRows: 1, numRows: 0, query: 'INSERT INTO `Users`(`login`, `password`, `createdAt`, `modifiedAt`) VALUES("foobar", "foobar42", NOW(), NOW())'}, 'Invalid informations object');
test.deepEqual(r, {login: 'foobar', password: 'foobar42', id: 1}, 'Invalid results object');
test.done();
});
},
anotherUser: function(test) {
db.models.User.create({login: 'barfoo', password: 'foobar42'}, function(e, r, i) {
test.equal(e, undefined, 'An error occured');
test.deepEqual(i, {insertId: 2, affectedRows: 1, numRows: 0, query: 'INSERT INTO `Users`(`login`, `password`, `createdAt`, `modifiedAt`) VALUES("barfoo", "foobar42", NOW(), NOW())'}, 'Invalid informations object');
test.deepEqual(r, {login: 'barfoo', password: 'foobar42', id: 2}, 'Invalid results object');
test.done();
});
},
newMessage: function(test) {
db.models.Message.create({to: 1, from: 1, title: 'First message', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.'}, function(e, r, i) {
test.equal(e, undefined, 'An error occured');
test.deepEqual(i, {insertId: 1, affectedRows: 1, numRows: 0, query: 'INSERT INTO `Messages`(`to`, `from`, `title`, `content`, `createdAt`) VALUES("1", "1", "First message", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.", NOW())'}, 'Invalid informations object');
test.deepEqual(r, {to: 1, from: 1, title: 'First message',content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.', id: 1}, 'Invalid results object');
test.done();
});
},
newNews: function(test) {
db.models.News.create({userId: 1, title: 'First news', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.'}, function(e, r, i) {
test.equal(e, undefined, 'An error occured');
test.deepEqual(i, {insertId: 1, affectedRows: 1, numRows: 0, query: 'INSERT INTO `News`(`userId`, `title`, `content`, `createdAt`, `modifiedAt`) VALUES("1", "First news", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.", NOW(), NOW())'}, 'Invalid informations object');
test.deepEqual(r, {userId: 1, title: 'First news', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit.', id: 1} , 'Invalid results object');
test.done();
});
}
},
nonUnique: function(test) {
db.models.User.create({login: 'foobar', password: 'foobar42'}, function(e, r, i) {
test.equal(i, undefined, 'This test should fail');
test.deepEqual(e, {validationErrors: ['Rule "isUnique" for field `login` has not been successfully validated.']}, 'This test should fail');
test.done();
});
}
}