biz9-data
Version:
The BiZ9-Data-Server Package is an object-relational mapper (ORM) that lets you build a clean, portable, reusable, and high-level data access layer with Node.js for data driven applications. The package consists of create, read, update and destroy (CRUD)
788 lines (757 loc) • 30.8 kB
JavaScript
const async = require('async');
const assert = require('node:assert');
const {Data,Database,Portal,Category} = require(".");
const {Log,Number} = require("biz9-utility");
const {DataType,DataItem,Item_Logic} = require("biz9-logic");
/*
* availble tests
- connect
- item_update
- get_data
- item_delete
- item_list_update
- item_list_get
- item_list_delete
*/
/* --- TEST CONFIG START --- */
//const KEY = '0'; // 0 = intialize a new data item.
//const KEY = 'd220d962-4491-4022-b5be-374d8168d79b';
const KEY = 'title_5153';
const ID = 'eaf4c2a9-2cc0-460a-8dca-12833a656096';
const DATA_TYPE = DataType.BLANK;
const OPTION = {};
//const FILTER = {test_group_id:59367};
const FILTER = {data_type:DATA_TYPE};
const APP_ID = 'test-june8';
const SQL = {};
/* --- TEST CONFIG END --- */
/* --- DATA CONFIG START --- */
const DATA_CONFIG ={
APP_ID:APP_ID,
MONGO_IP:'0.0.0.0',
MONGO_USERNAME_PASSWORD:'',
MONGO_PORT_ID:"27019",
MONGO_SERVER_USER:'admin',
MONGO_CONFIG_FILE_PATH:'/etc/mongod.conf',
MONGO_SSH_KEY:"",
REDIS_URL:"0.0.0.0",
REDIS_PORT_ID:"27019"
};
/* --- DATA CONFIG END --- */
/* --- BiZ9_CORE_CONFIG-END --- */
describe('connect', function(){ this.timeout(25000);
it("_connect", function(done){
let cloud_error=null;
let database = {};
async.series([
// GET - START
async function(call){
console.log('DATABASE-START');
//const [error,data] = await Team.get_member(db_connect,title_url);
const [error,data] = await Database.get({app_id:"test-may26",biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
database = data;
console.log('DATABASE-END');
},
async function(call){
console.log('CATEGORY-START');
let filter = {category:"Application Template"};
const [error,data] = await Category.get_category_product_group_list(database,filter,{get_items:true});
Log.w('data',data);
console.log('CATEGORY-END');
/*
console.log('ADMIN-START');
const [error,data] = await Portal.get_admin(database,{get_items:true});
Log.w('data',data);
console.log('ADMIN-END');
*/
/*
console.log('BUSSINESS-START');
const [error,data] = await Portal.get_business(database,{get_items:true});
Log.w('data',data);
console.log('BUSINESS-END');
*/
/*
console.log('PAGE-START');
let title_url = "page_1";
const [error,data] = await Portal.get_page(database,title_url,{get_items:true});
Log.w('data',data);
console.log('PAGE-END');
*/
/*
console.log('PORTAL-COUNT-LIST-START');
let id = 0;
let data_type = DataType.BLANK;
let filter = {};
let item_list = [];
Log.w('data',item_list);
const [error,data] = await Portal.count(database,data_type,filter,{});
Log.w('data',data);
console.log('PORTAL-COUNT-LIST-END');
*/
/*
console.log('PORTAL-DELETE-LIST-START');
let id = 0;
let data_type = DataType.BLANK;
let filter = {};
let item_list = [];
Log.w('data',item_list);
const [error,data] = await Portal.delete_list(database,data_type,filter,{});
Log.w('data',data);
console.log('PORTAL-DELETE-LIST-END');
*/
/*
console.log('PORTAL-UPDATE-LIST-START');
let id = 0;
let data_type = DataType.BLANK;
let item = Test.get_item(data_type,id);
let item_list = [];
item_list.push(Test.get_item(data_type,id));
item_list.push(Test.get_item(data_type,id));
item_list.push(Test.get_item(data_type,id));
Log.w('data',item_list);
const [error,data] = await Portal.update_list(database,item_list,{});
Log.w('data',data);
console.log('PORTAL-UPDATE-LIST-END');
//Log.w('database',database);
*/
/*
console.log('PORTAL-UPDATE-START');
let id = 0;
let data_type = DataType.BLANK;
let item = Test.get_item(data_type,id);
Log.w('item',item);
const [error,data] = await Portal.update(database,data_type,item,{});
Log.w('data',data);
console.log('PORTAL-GET-END');
//Log.w('database',database);
*/
/*
console.log('PORTAL-GET-LIST-START');
let data_type = DataType.BLANK;
let filter = {};
let sort_by = {};
let page_current = 1;
let page_size = 99;
const [error,data] = await Portal.get_list(database,data_type,filter,sort_by,page_current,page_size,{get_items:true,get_photos:true});
console.log(data);
console.log('PORTAL-GET-LIST-SUCCESS');
//database = data;
//Log.w('database',database);
*/
/*
console.log('PORTAL-GET-START');
let data_type = DataType.BLANK;
let key = "1d5e10eb-8927-442d-83ae-52f2e156daad";
//let key = 'product_1';
//const [error,data] = await Portal.get();
const [error,data] = await Portal.get(database,data_type,key,{get_items:true,get_photos:true});
console.log(data);
console.log('PORTAL-GET-SUCCESS');
//database = data;
//Log.w('database',database);
console.log('PORTAL-GET-END');
*/
/*
console.log('PORTAL-DELETE-START');
let data_type = DataType.BLANK;
let key = "1d5e10eb-8927-442d-83ae-52f2e156daad";
//let key = 'product_1';
//const [error,data] = await Portal.get();
const [error,data] = await Portal.delete(database,data_type,key,{get_items:true,get_photos:true});
console.log(data);
console.log('PORTAL-DELETE-SUCCESS');
//database = data;
//Log.w('database',database);
console.log('PORTAL-DELETE-END');
*/
},
/*
async function(call){
const [error,data] = await Database.close(database);
Log.w('data_close',data);
console.log('DATABASE-CLOSE');
//call();
},
*/
// GET - END
// CONNECT - START
/*
async function(call){
console.log('DATABASE-START');
let title_url = 'sales_team';
//const [error,data] = await Team.get_member(db_connect,title_url);
const [error,data] = await Database.get({app_id:"test-may26",biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
console.log('connect-good');
database = data;
Log.w('database',database);
//call();
},
async function(call){
const [error,data] = await Database.close(database);
Log.w('data_close',data);
console.log('DATABASE-CLOSE');
//call();
},
*/
// CONNECT - END
/*
function(call){
console.log('11111111111');
Data.open_db(data_config).then(([error,data])=> {
console.log('222222222');
cloud_error=Log.append(cloud_error,error);
db_connect = data;
assert.notEqual(db_connect,null);
Log.w('data',data);
console.log('CONNECT-OPEN-SUCCESS');
//call();
}).catch(error => {
Log.error('CONNECT-OPEN-ERROR',error);
console.log(error);
cloud_error=Log.append(cloud_error,error);
});
},
function(call){
Data.check_db(db_connect).then((data)=> {
cloud_error=Log.append(cloud_error,error);
Log.w('data',data);
Log.w('error',error);
assert.notEqual(data,null);
console.log(data);
console.log('CONNECT-CHECK-SUCCESS');
call();
}).catch(error => {
Log.error('CONNECT-CHECK-ERROR',error);
cloud_error=Log.append(cloud_error,error);
});
},
function(call){
Data.close_db(db_connect).then(([error,data])=> {
cloud_error=Log.append(cloud_error,error);
db_connect = data;
assert.equal(db_connect,null);
console.log(data);
console.log('CONNECT-CLOSE-SUCCESS');
call();
}).catch(error => {
Log.error('CONNECT-CLOSE-ERROR',error);
cloud_error=Log.append(cloud_error,error);
});
},
*/
],
function(error, result){
//console.log('CONNECT-DONE');
done();
});
});
});
describe('item_get', function(){ this.timeout(25000);
it("_item_get", function(done){
let cloud_error=null;
let database = {};
var item = DataItem.get_new(DATA_TYPE,0);
//var item = DataItem.get_new(DATA_TYPE,KEY);
async.series([
async function(call){
console.log('DATABASE-START');
const [error,data] = await Database.get(DATA_CONFIG);
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
console.log('DATABASE-SUCCESS');
}
console.log('DATABASE-END');
},
async function(call){
console.log('GET-START');
//const [error,data] = await Portal.get(database,item.data_type,ID,{});
const [error,data] = await Portal.get(database,item.data_type,KEY,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
item = data;
console.log(item);
console.log('GET-SUCCESS');
}
console.log('GET-END');
},
async function(call){
console.log('CLOSE-START');
const [error,data] = await Database.close(database,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
assert.Equal(data,null);
console.log('CLOSE-SUCCESS');
}
console.log('CLOSE-END');
},
],
function(error, result){
if(cloud_error){
Log.error("GET-ERROR-DONE",cloud_error);
}else{
console.log('GET-DONE');
}
done();
});
});
});
describe('item_update', function(){ this.timeout(25000);
it("_item_update", function(done){
let cloud_error=null;
let database = {};
var item_test = Item_Logic.get_test_item(DATA_TYPE,0);
async.series([
async function(call){
console.log('DATABASE-START');
const [error,data] = await Database.get(DATA_CONFIG);
console.log(data);
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
console.log(database);
console.log('DATABASE-SUCCESS');
}
console.log('DATABASE-END');
},
async function(call){
console.log('UPDATE-START');
const [error,data] = await Portal.update(database,DATA_TYPE,item_test,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
item_test = data;
assert.notEqual(item_test,null);
console.log(item_test);
console.log('UPDATE-SUCCESS');
}
console.log('UPDATE-END');
},
async function(call){
console.log('CLOSE-CLOSE');
const [error,data] = await Database.close(database,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
assert.Equal(data,null);
console.log('CLOSE-SUCCESS');
}
console.log('CLOSE-END');
},
],
function(error, result){
if(cloud_error){
Log.error("UPDATE-ERROR-DONE",cloud_error);
}else{
console.log('UPDATE-DONE');
}
done();
});
});
});
describe('item_update', function(){ this.timeout(25000);
it("_item_update", function(done){
let cloud_error=null;
let database = {};
var item_test = Item_Logic.get_test_item(DATA_TYPE,0);
async.series([
async function(call){
console.log('DATABASE-START');
const [error,data] = await Database.get(DATA_CONFIG);
console.log(data);
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
console.log(database);
console.log('DATABASE-SUCCESS');
}
console.log('DATABASE-END');
},
async function(call){
console.log('UPDATE-START');
const [error,data] = await Portal.update(database,DATA_TYPE,item_test,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
item_test = data;
assert.notEqual(item_test,null);
console.log(item_test);
console.log('UPDATE-SUCCESS');
}
console.log('UPDATE-END');
},
async function(call){
console.log('CLOSE-CLOSE');
const [error,data] = await Database.close(database,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
assert.Equal(data,null);
console.log('CLOSE-SUCCESS');
}
console.log('CLOSE-END');
},
],
function(error, result){
if(cloud_error){
Log.error("UPDATE-ERROR-DONE",cloud_error);
}else{
console.log('UPDATE-DONE');
}
done();
});
});
});
describe('item_delete', function(){ this.timeout(25000);
it("_item_delete", function(done){
let cloud_error=null;
let database = {};
var item = Item_Logic.get_test_item(DATA_TYPE,ID);
async.series([
async function(call){
console.log('DATABASE-START');
const [error,data] = await Database.get(DATA_CONFIG);
console.log(data);
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
console.log(database);
console.log('DATABASE-SUCCESS');
}
console.log('DATABASE-END');
},
async function(call){
console.log('DELETE-START');
const [error,data] = await Portal.delete(database,item.data_type,item.id,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
item = data;
console.log(item);
console.log('DELETE-SUCCESS');
}
console.log('DELETE-END');
},
async function(call){
console.log('CLOSE-CLOSE');
const [error,data] = await Database.close(database,{});
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
database = data;
assert.Equal(data,null);
console.log('CLOSE-SUCCESS');
}
console.log('CLOSE-END');
},
],
function(error, result){
if(cloud_error){
Log.error("UPDATE-ERROR-DONE",cloud_error);
}else{
console.log('UPDATE-DONE');
}
done();
});
});
});
describe('get_data', function(){ this.timeout(25000);
it("_get_data", function(done){
let cloud_error = null;
let database = {};
let item = get_new_item(DATA_TYPE,KEY);
async.series([
async function(call){
console.log('TEST-CONNECT-START');
//const [error,data] = await Database.get(DATA_CONFIG,{biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
//const [error,data] = await Database.get(DATA_CONFIG,{biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config",app_id:"cool_apple"});
//const [error,data] = await Database.get(DATA_CONFIG,{biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
//const [error,data] = await Database.get(DATA_CONFIG,{app_id:'cool_work'});
//const [error,data] = await Database.get(DATA_CONFIG,{app_id:'cool_work',biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
//const [error,data] = await Database.get({},{app_id:"cool_work",biz9_config_file:"/home/think2/www/doqbox/biz9-framework/biz9-service/code/biz9_config"});
const [error,data] = await Database.get(DATA_CONFIG);
database = data;
Log.w('database',database);
console.log('TEST-CONNECT-SUCCESS');
console.log('TEST-CONNECT-END');
},
async function(call){
console.log('TEST-GET-START');
Log.w('item',item);
const [error,data] = await Portal.get(database,item.data_type,item.id,OPTION);
Log.w('database',data);
console.log('TEST-GET-SUCCESS');
console.log('TEST-GET-END');
},
],
function(error, result){
if(cloud_error){
Log.error("TEST-GET-DONE",cloud_error);
}else{
console.log('TEST-GET-DATA-CONNECT-DONE');
}
done();
});
});
});
describe('item_list_update', function(){ this.timeout(25000);
it("_item_list_update", function(done){
let cloud_error=null;
let db_connect = {};
let item_test_list = [];
async.series([
function(call){
console.log('TEST-LIST-ITEM-UPDATE-CONNECT-START');
Data.open_db(data_config).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
Log.error('error',error);
}
db_connect = data;
assert.notEqual(db_connect,null);
console.log('TEST-LIST-ITEM-UPDATE-CONNECT-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-UPDATE-UPDATE-START');
let test_group_id=Number.get_id();
for(a=0;a<10;a++){
item_test=Test.get_item('dt_blank',0);
item_test.test_group_id=test_group_id;
item_test_list.push(item_test);
}
Data.update_list(db_connect,item_test_list).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
}
console.log(data);
assert.notEqual(0,data.length);
assert.strictEqual(10,data.length);
assert.notEqual(0,data[0].id);
console.log('TEST-LIST-ITEM-UPDATE-UPDATE-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-UPDATE-CLOSE-START');
Data.close_db(db_connect).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
}
db_connect=data;
assert.equal(data,null);
console.log('TEST-LIST-ITEM-UPDATE-CLOSE-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-UPDATE-ASSERT-START');
assert.notEqual(item_test.first_name,0);
assert.notEqual(item_test.first_name,null);
assert.notEqual(item_test.id,0);
assert.notEqual(item_test.id,null);
assert.equal(null,db_connect);
console.log('TEST-LIST-ITEM-UPDATE-ASSERT-SUCCESS');
call();
},
],
function(error, result){
if(cloud_error){
Log.error("TEST-LIST-ITEM-UPDATE-ERROR-DONE",cloud_error);
}else{
console.log('TEST-LIST-ITEM-UPDATE-CONNECT-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-UPDATE-UPDATE-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-UPDATE-CLOSE-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-UPDATE-ASSERT-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-UPDATE-DONE');
}
done();
});
});
});
describe('item_list_get', function(){ this.timeout(25000);
it("_item_list_get", function(done){
let cloud_error = null;
let db_connect = {};
let data_list = [];
let data_type =DATA_TYPE;
let filter =FILTER;
let sort_by ={title:-1};
let page_current =1;
let page_size =10;
async.series([
function(call){
console.log('LIST-ITEM-GET-CONNECT-START');
Data.open_db(data_config).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
Log.error('error',error);
}
db_connect = data;
assert.notEqual(db_connect,null);
console.log('LIST-ITEM-GET-CONNECT-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('LIST-ITEM-GET-GET-ITEM-LIST-START');
Log.w('data_type',data_type);
Log.w('filter',filter);
Log.w('sort_by',sort_by);
Log.w('page_current',page_current);
Log.w('page_size',page_size);
Data.get_list(db_connect,data_type,filter,sort_by,page_current,page_size).then(([error,data,item_count,page_count])=> {
data_list = data;
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
Log.w('data',data);
Log.w('item_count',item_count);
Log.w('page_count',page_count);
console.log('LIST-ITEM-GET-GET-ITEM-LIST-SUCCESS');
}
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('LIST-ITEM-GET-CLOSE-START');
Data.close_db(db_connect).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
}
db_connect=data;
assert.equal(data,null);
console.log('LIST-ITEM-GET-CLOSE-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('LIST-ITEM-GET-ASSERT-START');
assert.equal(data_list.length,page_size);
console.log('LIST-ITEM-GET-ASSERT-SUCCESS');
call();
},
],
function(error, result){
if(cloud_error){
Log.error("LIST-ITEM-GET-ERROR-DONE",cloud_error);
}else{
console.log('LIST-ITEM-GET-CONNECT-SUCCESS-DONE');
console.log('LIST-ITEM-GET-GET-SUCCESS-DONE');
console.log('LIST-ITEM-GET-ASSERT-SUCCESS-DONE');
console.log('LIST-ITEM-GET-CLOSE-SUCCESS-DONE');
console.log('LIST-ITEM-GET-DONE');
}
done();
});
});
});
describe('item_list_delete', function(){ this.timeout(25000);
it("_item_list_delete", function(done){
let cloud_error = null;
let db_connect = {};
let data_list = [];
let data_type =DATA_TYPE;
let filter =FILTER;
async.series([
function(call){
console.log('TEST-LIST-ITEM-DELETE-CONNECT-START');
Data.open_db(data_config).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
w('error',error);
}
db_connect = data;
assert.notEqual(db_connect,null);
console.log('TEST-LIST-ITEM-DELETE-CONNECT-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-GET-DELETE-ITEM-LIST-START');
Log.error('data_type',data_type);
Log.error('filter',filter);
Data.delete_list(db_connect,data_type,filter).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
}else{
data_list = data;
Log.error('data',data_list);
console.log('TEST-LIST-ITEM-GET-GET-ITEM-LIST-SUCCESS');
}
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-DELETE-CLOSE-START');
Data.close_db(db_connect).then(([error,data])=> {
if(error){
cloud_error=Log.append(cloud_error,error);
}
db_connect=data;
assert.equal(data,null);
console.log('TEST-LIST-ITEM-DELETE-CLOSE-SUCCESS');
call();
}).catch(error => {
cloud_error=Log.append(cloud_error,error);
call();
});
},
function(call){
console.log('TEST-LIST-ITEM-DELETE-ASSERT-START');
//assert.equal(data_list.length,page_size);
console.log('TEST-LIST-ITEM-DELETE-ASSERT-SUCCESS');
call();
},
],
function(error, result){
if(cloud_error){
Log.error("TEST-LIST-ITEM-DELETE-ERROR-DONE",cloud_error);
}else{
console.log('TEST-LIST-ITEM-DELETE-CONNECT-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-DELETE-GET-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-DELETE-ASSERT-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-DELETE-CLOSE-SUCCESS-DONE');
console.log('TEST-LIST-ITEM-DELETE-DONE');
}
done();
});
});
});
const get_new_item = (data_type,id) =>{
return {data_type:data_type,id:id};
}