database-jones
Version:
Lightweight database mapping
154 lines (141 loc) • 5.63 kB
JavaScript
/*
Copyright (c) 2012, Oracle and/or its affiliates. All rights
reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2 of
the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
02110-1301 USA
*/
;
/*global integraltypes,verify_integraltypes,fail_verify_integraltypes*/
var jones = require("database-jones");
var unified_debug = require("unified_debug");
var harness = require("jones-test");
var udebug = unified_debug.getLogger("integraltypes/lib.js");
/** The integraltypes domain object */
global.integraltypes = function(id, ttinyint, tsmallint, tmediumint, tint, tbigint) {
if (id !== undefined) { this.id = id; }
if (ttinyint !== undefined) { this.ttinyint = ttinyint; }
if (tsmallint !== undefined) { this.tsmallint = tsmallint; }
if (tmediumint !== undefined) { this.tmediumint = tmediumint; }
if (tint !== undefined) { this.tint = tint; }
if (tbigint !== undefined) { this.tbigint = tbigint; }
};
/** The integraltypes key */
global.integraltypes_key = function(id) {
this.id = id;
};
/** map integraltypes domain object */
var tablemapping = new jones.TableMapping("test.integraltypes");
tablemapping.mapField("id");
tablemapping.mapField("ttinyint", "ttinyint");
tablemapping.mapField("tsmallint", "tsmallint");
tablemapping.mapField("tmediumint", "tmediumint");
tablemapping.mapField("tint", "tint");
tablemapping.mapField("tbigint", "tbigint");
tablemapping.applyToClass(global.integraltypes);
global.integraltypes.prototype.getId = function() {return this.id;};
/** Verify the instance or append an error message to the test case */
global.verify_integraltypes = function(err, instance, id, testCase, domainObject) {
if (err) {
testCase.appendErrorMessage(err);
return;
}
if (typeof instance !== 'object') {
testCase.appendErrorMessage('Result for id ' + id + ' is not an object; actual type: ' + typeof instance);
}
if (instance === null) {
testCase.appendErrorMessage('Result for id ' + id + ' is null.');
return;
}
if (domainObject) {
if (typeof(instance.getId) !== 'function') {
testCase.appendErrorMessage('Result for id ' + id + ' is not a domain object');
return;
}
}
udebug.log_detail('instance for id ', id, ':', instance);
testCase.errorIfNotEqual('fail to verify id', id, instance.id);
testCase.errorIfNotEqual('fail to verify ttinyint', id, instance.ttinyint);
testCase.errorIfNotEqual('fail to verify tsmallint', id, instance.tsmallint);
testCase.errorIfNotEqual('fail to verify tmediumint', id, instance.tmediumint);
testCase.errorIfNotEqual('fail to verify tint', id, instance.tint);
testCase.errorIfNotEqual('fail to verify tbigint of type ' + typeof instance.tbigint, id, instance.tbigint);
};
global.fail_verify_integraltypes_array = function(err, instances, ids, testCase, domainObject) {
var i;
if (err) {
testCase.appendErrorMessage(err);
} else if (instances.length !== ids.length) {
testCase.appendErrorMessage(
'Mismatch in length of result; expected: ' + ids.length + '; actual: ' + instances.length);
} else {
for (i = 0; i < ids.length; ++i) {
// verify each instance in the result array
verify_integraltypes(err, instances[i], ids[i], testCase, domainObject);
}
}
// fail if any failures
testCase.failOnError();
};
/** Verify the instance or fail the test case */
global.fail_verify_integraltypes = function(err, instance, id, testCase, domainObject) {
if (err) {
testCase.fail(err);
return;
}
if (typeof instance !== 'object') {
testCase.fail(new Error('Result for id ' + id + ' is not an object; actual type: ' + typeof instance));
return;
}
if (instance === null) {
testCase.fail(new Error('Result for id ' + id + ' is null.'));
return;
}
if (domainObject) {
if (typeof(instance.getId) !== 'function') {
testCase.fail(new Error('Result for id ' + id + ' is not a domain object'));
return;
}
}
udebug.log_detail('instance:', instance);
var message = '';
if (instance.id != id) {
message += 'fail to verify id: expected: ' + id + ', actual: ' + instance.id + '\n';
}
if (instance.ttinyint != id) {
message += 'fail to verify ttinyint: expected: ' + id + ', actual: ' + instance.ttinyint + '\n';
}
if (instance.tsmallint != id) {
message += 'fail to verify tsmallint: expected: ' + id + ', actual: ' + instance.tsmallint + '\n';
}
if (instance.tmediumint != id) {
message += 'fail to verify tmediumint: expected: ' + id + ', actual: ' + instance.tmediumint + '\n';
}
if (instance.tint != id) {
message += 'fail to verify tint: expected: ' + id + ', actual: ' + instance.tint + '\n';
}
if (instance.tbigint != id) {
message += 'fail to verify tbigint: expected: ' + id + ', actual: ' + instance.tbigint + '\n';
}
if (message !== '') {
testCase.appendErrorMessage(message);
}
if (testCase.session) {
testCase.session.close(function(err) {
if (err) {
testCase.appendErrorMessage(err);
}
testCase.session = null;
testCase.failOnError();
});
}
};