mysql5/mysql-5.7.27/storage/ndb/nodejs/test/composition/RelationshipMappingTest.js

81 lines
3.2 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 lib = require('./lib.js');
var t1 = new harness.ConcurrentTest("RelationshipMappingTest");
t1.run = function() {
var testCase = this;
lib.mapShop();
testCase.mappings = lib.shopDomainObjects;
fail_openSession(testCase, function(session) {
// get TableMetadata for all tables
session.getTableMetadata('test', 'customer').
then(function(customerMetadata){
return session.getTableMetadata('test', 'shoppingcart');}).
then(function(shoppingCartMetadata){
lib.verifyFK(testCase, shoppingCartMetadata,
[{name:'fkcustomerid',targetTable:'customer',targetDatabase:'test', columnNames:['customerid'],targetColumnNames:['id']}
]);
return session.getTableMetadata('test', 'lineitem');}).
then(function(lineItemMetadata){
lib.verifyFK(testCase, lineItemMetadata,
[{name:'fkitemid',targetTable:'item',targetDatabase:'test', columnNames:['itemid'],targetColumnNames:['id']},
{name:'fkshoppingcartid',targetTable:'shoppingcart',targetDatabase:'test', columnNames:['shoppingcartid'],targetColumnNames:['id']}
]);
return session.getTableMetadata('test', 'item');}).
then(function(itemMetadata){
return session.getTableMetadata('test', 'discount');}).
then(function(discountMetadata){
return session.getTableMetadata('test', 'customerdiscount');}).
then(function(customerDiscountMetadata){
lib.verifyFK(testCase, customerDiscountMetadata,
[{name:'fkcustomerid',targetTable:'customer',targetDatabase:'test', columnNames:['customerid'],targetColumnNames:['id']},
{name:'fkdiscountid',targetTable:'discount',targetDatabase:'test', columnNames:['discountid'],targetColumnNames:['id']}
]);
return session.close();}).
then(function() {testCase.failOnError();}, function(err) {testCase.fail(err);});
});
};
var t2 = new harness.ConcurrentTest("SecondDatabaseMappingTest");
t2.run = function() {
var testCase = this;
lib.mapFkDifferentDb();
testCase.mappings = [lib.FkDifferentDb];
fail_openSession(testCase, function(session) {
// get TableMetadata for testfk
session.getTableMetadata('testfk', 'fkdifferentdb').
then(function(t1Metadata){
lib.verifyFK(testCase, t1Metadata,
[{name:'fkcustomerid',targetTable:'customer',targetDatabase:'test', columnNames:['id'],targetColumnNames:['id']}
]);
return session.close();}).
then(function() {testCase.failOnError();}, function(err) {testCase.fail(err);});
});
};
exports.tests = [t1, t2];