mysql5/mysql-5.7.27/storage/ndb/nodejs/test/api/TableMappingErrorTest.js

108 lines
3.5 KiB
JavaScript

/*
Copyright (c) 2014, 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
*/
'use strict';
var path = require("path");
var doc_parser = require(path.join(mynode.fs.suites_dir, 'lib', 'doc_parser'));
/** Error conditions tested:
* t1 missing table in TableMapping constructor using literal
* t2 TableMapping constructor with bad table 'a.b.c'
* t3 non-string in TableMapping constructor
* t4 no parameter in TableMapping constructor
* t5 TableMapping constructor with bad table 'a b'
* t6 applyToClass with a non-domain object (constructor)
*/
function checkErrorMessage(tc, tm, msg) {
if (!tm.error) {
tc.fail('Actual error was missing.');
} else {
if (tm.error.indexOf(msg) === -1) {
tc.fail('Actual error did not contain \'' + msg + '\' in error message:\n' + tm.error);
} else {
tc.pass();
}
}
}
var domainClass = function(id, name, age, magic) {
this.id = id;
this.name = name;
this.age = age;
this.magic = magic;
};
var t1 = new harness.ConcurrentTest('t1NewTableMappingFromLiteralMissingTable');
t1.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping(
{
'database' : 'test',
'mapAllColumns' : false,
'fields' : {
'fieldName' : 'id',
'columnName' : 'id',
'persistent' : true
}
});
checkErrorMessage(testCase, tableMapping, 'Required property \'table\' is missing');
};
var t2 = new harness.ConcurrentTest('t2NewTableMappingBadTable');
t2.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping('a.b.c');
checkErrorMessage(testCase, tableMapping, 'tableName must contain one or two parts: [database.]table');
};
var t3 = new harness.ConcurrentTest('t3NewTableMappingNonString');
t3.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping(99);
checkErrorMessage(testCase, tableMapping, 'string tableName or literal tableMapping is a required parameter');
};
var t4 = new harness.ConcurrentTest('t4NewTableMappingNoParameter');
t4.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping();
checkErrorMessage(testCase, tableMapping, 'string tableName or literal tableMapping is a required parameter');
};
var t5 = new harness.ConcurrentTest('t5NewTableMappingBadTableContainsBlanks');
t5.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping('a b');
checkErrorMessage(testCase, tableMapping, 'tableName must contain one or two parts: [database.]table');
};
var t6 = new harness.ConcurrentTest('t6NewTableMappingBadTable');
t6.run = function() {
var testCase = this;
var tableMapping = new mynode.TableMapping('a.b');
var clazz = 'not a class';
tableMapping.applyToClass(clazz);
checkErrorMessage(testCase, tableMapping, 'parameter must be constructor');
};
module.exports.tests = [t1, t2, t3, t4, t5, t6];