water-orm
Version:
A monolith version of Standalone waterline ORM
148 lines (118 loc) • 4.5 kB
JavaScript
var assert = require('assert'),
_ = require('lodash');
describe('Semantic Interface', function() {
describe('.destroy()', function() {
describe('a single record', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
before(function(done) {
Semantic.User.create({ first_name: 'Destroy', last_name: 'Test' }, function(err) {
if(err) return done(err);
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should destroy a record', function(done) {
Semantic.User.destroy({ first_name: 'Destroy' }, function(err, records) {
assert.ifError(err);
assert(Array.isArray(records));
assert.strictEqual(records.length, 1);
assert.equal(records[0].first_name, 'Destroy');
assert.equal(records[0].last_name, 'Test');
done();
});
});
it('should return an empty array when searched for', function(done) {
Semantic.User.find({ first_name: 'Destroy' }, function(err, users) {
assert.strictEqual(users.length, 0);
done();
});
});
});
describe('with numeric ID', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
var user;
// Create a user to test destroy on
before(function(done) {
Semantic.User.create({ first_name: 'Destroy', last_name: 'Test' }, function(err, record) {
if(err) return done(err);
user = record;
done();
});
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should destroy a record', function(done) {
Semantic.User.destroy(user.id, function(err, status) {
assert.ifError(err);
done();
});
});
it('should return an empty array when searched for', function(done) {
Semantic.User.find({ first_name: 'Destroy' }, function(err, users) {
assert.strictEqual(users.length, 0);
done();
});
});
});
describe('multiple records', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
beforeEach(function(done) {
Semantic.User.createEach([
{ first_name: 'dummy_test' },
{ first_name: 'dummy_test' },
{ first_name: 'dummy_test' }
], done);
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should destroy all the records', function(done) {
Semantic.User.destroy(function(err, users) {
assert.ifError(err);
done();
});
});
it('should return an empty array when searched for', function(done) {
Semantic.User.find({ first_name: 'Destroy' }, function(err, users) {
assert.strictEqual(users.length, 0);
done();
});
});
});
describe('IN query', function() {
/////////////////////////////////////////////////////
// TEST SETUP
////////////////////////////////////////////////////
beforeEach(function(done) {
Semantic.User.createEach([
{ first_name: 'dummy_test_in' },
{ first_name: 'dummy_test_in' },
{ first_name: 'dummy_test_in' }
], done);
});
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should not destroy any records', function(done) {
Semantic.User.destroy({ id: [] }, function(err, users) {
assert.ifError(err);
assert.strictEqual(users.length, 0);
Semantic.User.find({ first_name: 'dummy_test_in' }, function(err, users) {
assert.ifError(err);
assert.strictEqual(users.length, 3);
done();
});
});
});
});
});
});