mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
734 lines
30 KiB
JavaScript
734 lines
30 KiB
JavaScript
'use strict';
|
|
|
|
var assert = require('assert');
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var muk = require('muk');
|
|
|
|
|
|
for(var filepath in require.cache){
|
|
delete require.cache[filepath];
|
|
}
|
|
var Index = require('../../lib/index.js');
|
|
var instance = new Index();
|
|
instance.load();
|
|
|
|
think.APP_PATH = path.dirname(__dirname) + '/testApp';
|
|
|
|
var Base = require('../../lib/model/base.js');
|
|
var mysqlSocket = think.adapter('socket', 'mysql');
|
|
|
|
describe('model/base.js', function(){
|
|
var instance = null;
|
|
before(function(){
|
|
instance = new Base('user', think.config('db'));
|
|
var tagCacheKeyNum = 0;
|
|
muk(mysqlSocket.prototype, 'query', function(sql){
|
|
if (sql === 'SHOW COLUMNS FROM `think_friend`') {
|
|
var data = [
|
|
{"Field":"id","Type":"int(11) unsigned","Null":"NO","Key":"PRI","Default":null,"Extra":"auto_increment"},
|
|
{"Field":"title","Type":"varchar(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"cate_id","Type":"tinyint(255)","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if (sql === 'SHOW COLUMNS FROM `think_cate`') {
|
|
var data = [
|
|
{"Field":"id","Type":"int(11) unsigned","Null":"NO","Key":"","Default":null,"Extra":""},
|
|
{"Field":"title","Type":"varchar(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"cate_id","Type":"tinyint(255)","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if (sql === 'SHOW COLUMNS FROM `think_tag`') {
|
|
var data = [
|
|
{"Field":"wid","Type":"int(11) unsigned","Null":"NO","Key":"PRI","Default":null,"Extra":"auto_increment"},
|
|
{"Field":"title","Type":"varchar(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"cate_id","Type":"tinyint(255)","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if (sql === 'SHOW COLUMNS FROM `think_user`') {
|
|
var data = [
|
|
{"Field":"wid","Type":"int(11) unsigned","Null":"NO","Key":"","Default":null,"Extra":""},
|
|
{"Field":"title","Type":"varchar(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"cate_id","Type":"tinyint(255)","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if (sql === 'SHOW COLUMNS FROM `think_type`') {
|
|
var data = [
|
|
{"Field":"wid","Type":"int(11) unsigned","Null":"NO","Key":"","Default":null,"Extra":""},
|
|
{"Field":"flo","Type":"float(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"is_show","Type":"bool","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if(sql.indexOf('SHOW COLUMNS ') > -1){
|
|
var data = [
|
|
{"Field":"wid","Type":"int(11) unsigned","Null":"NO","Key":"PRI","Default":null,"Extra":""},
|
|
{"Field":"title","Type":"varchar(255)","Null":"NO","Key":"UNI","Default":null,"Extra":""},
|
|
{"Field":"cate_id","Type":"tinyint(255)","Null":"NO","Key":"MUL","Default":"1","Extra":""},
|
|
{"Field":"cate_no","Type":"int(11)","Null":"YES","Key":"","Default":null,"Extra":""},
|
|
];
|
|
return Promise.resolve(data);
|
|
}else if (sql.indexOf("SELECT * FROM `think_type` WHERE ( `flo` = 0 ) LIMIT 1") > -1) {
|
|
return Promise.resolve([]);
|
|
}else if (sql.indexOf('SELECT COUNT(think_tag.wid) AS thinkjs_count FROM `think_tag` LIMIT 1') > -1) {
|
|
return Promise.resolve([{
|
|
thinkjs_count: 100
|
|
}])
|
|
}else if (sql.indexOf("SELECT `wid` FROM `think_group` LIMIT 2")> -1) {
|
|
return Promise.resolve([
|
|
{"id":7565,"title":"title1","cate_id":1,"cate_no":0},
|
|
{"id":7564,"title":"title2","cate_id":2,"cate_no":977}
|
|
])
|
|
}else if(sql.trim() === 'SELECT * FROM `think_cache_tbl`'){
|
|
++tagCacheKeyNum;
|
|
return Promise.resolve(['cache1', 'cache2', tagCacheKeyNum]);
|
|
}else if(sql.trim() === "INSERT INTO `think_user` (`title`) VALUES ('test')"){
|
|
return Promise.resolve({
|
|
insertId: 100
|
|
});
|
|
}else if(sql.trim() === "REPLACE INTO `think_user` (`title`) VALUES ('test')"){
|
|
return Promise.resolve({
|
|
insertId: 1000
|
|
});
|
|
}else if(sql.trim() === "SELECT * FROM `think_user` WHERE ( `id` = 897 )"){
|
|
return Promise.resolve([]);
|
|
}else if(sql.trim() === "SELECT * FROM `think_user` WHERE ( `id` = 898 )"){
|
|
return Promise.resolve([{
|
|
id: 898
|
|
}]);
|
|
}else if(sql.trim() === "INSERT INTO `think_user`(`title`) VALUES ('title1'),('title2')"){
|
|
return Promise.resolve({
|
|
insertId: 565
|
|
})
|
|
}else if(sql.trim() === "REPLACE INTO `think_user`(`title`) VALUES ('title1'),('title2')"){
|
|
return Promise.resolve({
|
|
insertId: 343
|
|
})
|
|
}else if(sql.trim() === "DELETE FROM `think_user` WHERE ( `id` = 1 )"){
|
|
return Promise.resolve({
|
|
affectedRows: 3
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`='title1' WHERE ( `id` = 100 )"){
|
|
return Promise.resolve({
|
|
affectedRows: 1
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`='title2' WHERE ( `id` = 101 )"){
|
|
return Promise.resolve({
|
|
affectedRows: 3
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`=title+10"){
|
|
return Promise.resolve({
|
|
affectedRows: 1
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`=title+1"){
|
|
return Promise.resolve({
|
|
affectedRows: 1
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`=title-10"){
|
|
return Promise.resolve({
|
|
affectedRows: 1
|
|
})
|
|
}else if(sql.trim() === "UPDATE `think_user` SET `title`=title-1"){
|
|
return Promise.resolve({
|
|
affectedRows: 1
|
|
})
|
|
}else if(sql.trim() === "SELECT * FROM `think_user` WHERE ( `id` = 100 )"){
|
|
return Promise.resolve([{"id":7565,"title":"title1","cate_id":1,"cate_no":0}])
|
|
}else if(sql.trim() === "SELECT * FROM `think_user` WHERE ( `id` = 100 ) LIMIT 1"){
|
|
return Promise.resolve([{"id":7565,"title":"title1","cate_id":1,"cate_no":0}])
|
|
}else if(sql.trim() === "INSERT INTO `think_user` (`wid`,`title`,`cate_id`,`cate_no`) SELECT * FROM `think_tag` WHERE ( `name` = 'test' )"){
|
|
return Promise.resolve({
|
|
insertId: 100
|
|
});
|
|
}else if(sql.trim() === "SELECT COUNT(think_user.id) AS think_count FROM `think_user` WHERE ( `name` = 'test' ) LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_count: 399
|
|
}])
|
|
}else if(sql.trim() === "SELECT `title` FROM `think_user` WHERE ( `name` = 'welefen' )"){
|
|
return Promise.resolve([{
|
|
title: 'title1'
|
|
}, {
|
|
title: 'title2'
|
|
}])
|
|
}else if(sql.trim() === "SELECT `title` FROM `think_user` WHERE ( `name` = 'welefen' ) LIMIT 1"){
|
|
return Promise.resolve([{
|
|
title: 'title1'
|
|
}])
|
|
}else if(sql.trim() === "SELECT `title`,`cate_no` FROM `think_user` WHERE ( `name` = 'welefen' ) LIMIT 1"){
|
|
return Promise.resolve([{
|
|
title: 'title1',
|
|
cate_no: 1000
|
|
}])
|
|
}else if(sql.trim() === "SELECT `title`,`cate_no` FROM `think_user` WHERE ( `name` = 'welefen' ) LIMIT 3"){
|
|
return Promise.resolve([{
|
|
title: 'title1',
|
|
cate_no: 1000
|
|
},{
|
|
title: 'title2',
|
|
cate_no: 1001
|
|
},{
|
|
title: 'title3',
|
|
cate_no: 1002
|
|
}])
|
|
}else if(sql.trim() === "SELECT COUNT(id) AS think_count FROM `think_user` LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_count: 40000
|
|
}])
|
|
}else if(sql.trim() === "SELECT SUM(id) AS think_sum FROM `think_user` LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_sum: 1000
|
|
}])
|
|
}else if(sql.trim() === "SELECT MIN(id) AS think_min FROM `think_user` LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_min: 1000
|
|
}])
|
|
}else if(sql.trim() === "SELECT MAX(id) AS think_max FROM `think_user` LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_max: 1000
|
|
}])
|
|
}else if(sql.trim() === "SELECT AVG(id) AS think_avg FROM `think_user` LIMIT 1"){
|
|
return Promise.resolve([{
|
|
think_avg: 1000
|
|
}])
|
|
}
|
|
//console.log(sql)
|
|
var data = [
|
|
{"id":7565,"title":"title1","cate_id":1,"cate_no":0},
|
|
{"id":7564,"title":"title2","cate_id":2,"cate_no":977},
|
|
{"id":7563,"title":"title3","cate_id":7,"cate_no":281},
|
|
{"id":7562,"title":"title4","cate_id":6,"cate_no":242},
|
|
{"id":7561,"title":"title5","cate_id":3,"cate_no":896},
|
|
{"id":7560,"title":"title6","cate_id":3,"cate_no":897},
|
|
{"id":7559,"title":"title7","cate_id":3,"cate_no":898},
|
|
{"id":7558,"title":"title8","cate_id":17,"cate_no":151},
|
|
{"id":7557,"title":"title9","cate_id":17,"cate_no":152}
|
|
]
|
|
return Promise.resolve(data);
|
|
})
|
|
})
|
|
it('getTableFields', function(done){
|
|
instance.getTableFields().then(function(data){
|
|
assert.deepEqual(data, { wid:{name: 'wid',type: 'int(11) unsigned',required: false,default: null, primary: false, unique: false, auto_increment: false }, title: { name: 'title', type: 'varchar(255)', required: false, default: null, primary: false, unique: true, auto_increment: false }, cate_id: { name: 'cate_id', type: 'tinyint(255)', required: false, default: '1', primary: false, unique: false, auto_increment: false }, cate_no: { name: 'cate_no', type: 'int(11)', required: false, default: null, primary: false, unique: false, auto_increment: false } })
|
|
done();
|
|
})
|
|
})
|
|
it('getTableFields, exist', function(done){
|
|
instance.getTableFields().then(function(){
|
|
return instance.getTableFields();
|
|
}).then(function(data){
|
|
assert.deepEqual(data, { wid:{name: 'wid',type: 'int(11) unsigned',required: false, default: null, primary: false, unique: false, auto_increment: false }, title: { name: 'title', type: 'varchar(255)', required: false, default: null, primary: false, unique: true, auto_increment: false }, cate_id: { name: 'cate_id', type: 'tinyint(255)', required: false, default: '1', primary: false, unique: false, auto_increment: false }, cate_no: { name: 'cate_no', type: 'int(11)', required: false, default: null, primary: false, unique: false, auto_increment: false } })
|
|
done();
|
|
})
|
|
})
|
|
it('getTableFields, type', function(done){
|
|
return instance.getTableFields('think_type').then(function(data){
|
|
assert.deepEqual(data, { wid: { name: 'wid', type: 'int(11) unsigned', required: false, default: null, primary: false, unique: false, auto_increment: false }, flo: { name: 'flo', type: 'float(255)', required: false, default: null, primary: false, unique: true, auto_increment: false }, is_show: { name: 'is_show', type: 'bool', required: false, default: '1', primary: false, unique: false, auto_increment: false }, cate_no: { name: 'cate_no', type: 'int(11)', required: false, default: null, primary: false, unique: false, auto_increment: false } })
|
|
assert.equal(instance.getLastSql(), 'SHOW COLUMNS FROM `think_type`');
|
|
done();
|
|
})
|
|
})
|
|
it('getTableFields, change pk', function(done){
|
|
var instance = new Base('tag', think.config('db'))
|
|
return instance.getTableFields('think_tag').then(function(data){
|
|
assert.equal(instance.getLastSql(), 'SHOW COLUMNS FROM `think_tag`');
|
|
assert.equal(instance.pk, 'wid');
|
|
done();
|
|
})
|
|
})
|
|
it('getTableFields, change pk, getPk', function(done){
|
|
var instance = new Base('tag', think.config('db'))
|
|
return instance.getTableFields('think_tag').then(function(data){
|
|
return instance.getPk();
|
|
}).then(function(pk){
|
|
assert.equal(instance.getLastSql(), 'SHOW COLUMNS FROM `think_tag`');
|
|
assert.equal(pk, 'wid');
|
|
done();
|
|
})
|
|
})
|
|
it('getUniqueField', function(done){
|
|
var instance = new Base('tag', think.config('db'))
|
|
return instance.getUniqueField().then(function(data){
|
|
assert.equal(data, 'title');
|
|
done();
|
|
})
|
|
})
|
|
it('getUniqueField, with data', function(done){
|
|
var instance = new Base('tag', think.config('db'))
|
|
return instance.getUniqueField({
|
|
title: 'welefen'
|
|
}).then(function(data){
|
|
assert.equal(data, 'title');
|
|
done();
|
|
})
|
|
})
|
|
it('build sql', function(done){
|
|
instance.where('id=1').field('name,title').group('name').limit(10).buildSql().then(function(sql){
|
|
assert.equal(sql, '( SELECT `name`,`title` FROM `think_user` WHERE ( id=1 ) GROUP BY `name` LIMIT 10 )')
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions', function(done){
|
|
instance.parseOptions().then(function(options){
|
|
assert.deepEqual(options, { table: 'think_user', tablePrefix: 'think_', model: 'user' })
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions, has oriOpts', function(done){
|
|
instance.parseOptions({
|
|
where: {
|
|
name: 'welefen'
|
|
}
|
|
}).then(function(options){
|
|
assert.deepEqual(options, { where: { name: 'welefen' },table: 'think_user',tablePrefix: 'think_',model: 'user' })
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions, has oriOpts', function(done){
|
|
instance.parseOptions(1000).then(function(options){
|
|
assert.deepEqual(options, { table: 'think_user', tablePrefix: 'think_', model: 'user', where: { id: '1000' } })
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions, has alias', function(done){
|
|
instance.alias('a').parseOptions(1000).then(function(options){
|
|
assert.deepEqual(options, { alias: 'a', table: 'think_user AS a', tablePrefix: 'think_', model: 'user', where: { id: '1000' } })
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions, field reverse', function(done){
|
|
instance.alias('a').field('title', true).parseOptions(1000).then(function(options){
|
|
assert.deepEqual(options, { alias: 'a', field: [ 'wid', 'cate_id', 'cate_no' ], fieldReverse: false, table: 'think_user AS a', tablePrefix: 'think_', model: 'user', where: { id: '1000' } })
|
|
done();
|
|
})
|
|
})
|
|
it('parseOptions, key is not valid', function(done){
|
|
instance.alias('a').where({
|
|
'fasdf$www': 'welefen'
|
|
}).parseOptions(1000).catch(function(err){
|
|
done();
|
|
})
|
|
})
|
|
it('parseWhereOptions', function(){
|
|
var options = instance.parseWhereOptions('10,20');
|
|
assert.deepEqual(options, { where: { id: { IN: '10,20' } } })
|
|
})
|
|
it('add data, empty', function(done){
|
|
instance.add().catch(function(err){
|
|
assert.deepEqual(instance._data, {});
|
|
done();
|
|
})
|
|
})
|
|
it('add data, has data', function(done){
|
|
instance.add({
|
|
name: 'welefen',
|
|
title: 'test'
|
|
}).then(function(insertId){
|
|
assert.equal(insertId, 100);
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "INSERT INTO `think_user` (`title`) VALUES ('test')");
|
|
done();
|
|
})
|
|
})
|
|
it('replace data, has data', function(done){
|
|
instance.add({
|
|
name: 'welefen',
|
|
title: 'test'
|
|
}, true).then(function(insertId){
|
|
assert.equal(insertId, 1000);
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "REPLACE INTO `think_user` (`title`) VALUES ('test')");
|
|
done();
|
|
})
|
|
})
|
|
it('thenAdd, not exist', function(done){
|
|
instance.where({id: 897}).thenAdd({
|
|
name: 'welefen',
|
|
title: 'test'
|
|
}).then(function(data){
|
|
assert.deepEqual(data, { id: 100, type: 'add' })
|
|
done();
|
|
})
|
|
})
|
|
it('thenAdd, exist', function(done){
|
|
instance.where({id: 898}).thenAdd({
|
|
name: 'welefen',
|
|
title: 'test'
|
|
}).then(function(data){
|
|
assert.deepEqual(data, { id: 898, type: 'exist' })
|
|
done();
|
|
})
|
|
})
|
|
it('add many', function(done){
|
|
instance.addMany([{
|
|
name: 'name1',
|
|
title: 'title1'
|
|
}, {
|
|
name: 'name2',
|
|
title: 'title2'
|
|
}]).then(function(data){
|
|
assert.deepEqual(data, [ 564, 565 ]);
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "INSERT INTO `think_user`(`title`) VALUES ('title1'),('title2')");
|
|
done();
|
|
})
|
|
})
|
|
it('add many, replace', function(done){
|
|
instance.addMany([{
|
|
name: 'name1',
|
|
title: 'title1'
|
|
}, {
|
|
name: 'name2',
|
|
title: 'title2'
|
|
}], true).then(function(data){
|
|
assert.deepEqual(data, [ 342, 343 ]);
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "REPLACE INTO `think_user`(`title`) VALUES ('title1'),('title2')");
|
|
done();
|
|
})
|
|
})
|
|
it('add many, not array', function(done){
|
|
instance.addMany().catch(function(err){
|
|
done();
|
|
})
|
|
})
|
|
it('delete data', function(done){
|
|
instance.where({id: 1}).delete().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "DELETE FROM `think_user` WHERE ( `id` = 1 )");
|
|
assert.equal(data, 3);
|
|
done();
|
|
})
|
|
})
|
|
it('update, empty', function(done){
|
|
instance.where({id: 100}).update().catch(function(err){
|
|
done();
|
|
})
|
|
})
|
|
it('update', function(done){
|
|
instance.where({id: 100}).update({
|
|
name: 'name1',
|
|
title: 'title1'
|
|
}).then(function(rows){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`='title1' WHERE ( `id` = 100 )")
|
|
assert.equal(rows, 1);
|
|
done();
|
|
})
|
|
})
|
|
it('update, where condition from data', function(done){
|
|
instance.update({
|
|
id: 100,
|
|
name: 'name1',
|
|
title: 'title1'
|
|
}).then(function(rows){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`='title1' WHERE ( `id` = 100 )")
|
|
assert.equal(rows, 1);
|
|
done();
|
|
})
|
|
})
|
|
it('update many, empty', function(done){
|
|
instance.where({id: 100}).updateMany().catch(function(err){
|
|
done();
|
|
})
|
|
})
|
|
it('update many', function(done){
|
|
instance.updateMany([{
|
|
id: 100,
|
|
name: 'name1',
|
|
title: 'title1'
|
|
}]).then(function(rows){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`='title1' WHERE ( `id` = 100 )")
|
|
assert.equal(rows, 1);
|
|
done();
|
|
})
|
|
})
|
|
it('update many', function(done){
|
|
instance.updateMany([{
|
|
id: 100,
|
|
name: 'name1',
|
|
title: 'title1'
|
|
},{
|
|
id: 101,
|
|
name: 'name2',
|
|
title: 'title2'
|
|
}]).then(function(rows){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`='title2' WHERE ( `id` = 101 )")
|
|
assert.equal(rows, 4);
|
|
done();
|
|
})
|
|
})
|
|
it('increment', function(done){
|
|
instance.increment('title', 10).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`=title+10");
|
|
assert.equal(data, 1)
|
|
done();
|
|
})
|
|
})
|
|
it('increment, default step', function(done){
|
|
instance.increment('title').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`=title+1");
|
|
assert.equal(data, 1)
|
|
done();
|
|
})
|
|
})
|
|
it('decrement', function(done){
|
|
instance.decrement('title', 10).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`=title-10");
|
|
assert.equal(data, 1)
|
|
done();
|
|
})
|
|
})
|
|
it('decrement, default step', function(done){
|
|
instance.decrement('title').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_user` SET `title`=title-1");
|
|
assert.equal(data, 1)
|
|
done();
|
|
})
|
|
})
|
|
it('find', function(done){
|
|
instance.where({id: 100}).find().then(function(data){
|
|
assert.equal(instance.getLastSql(), "SELECT * FROM `think_user` WHERE ( `id` = 100 )");
|
|
assert.deepEqual(data, { id: 7565, title: 'title1', cate_id: 1, cate_no: 0 })
|
|
done();
|
|
})
|
|
})
|
|
it('select', function(done){
|
|
instance.where({id: 100}).limit(1).select().then(function(data){
|
|
assert.equal(instance.getLastSql(), "SELECT * FROM `think_user` WHERE ( `id` = 100 ) LIMIT 1");
|
|
assert.deepEqual(data, [{ id: 7565, title: 'title1', cate_id: 1, cate_no: 0 }])
|
|
done();
|
|
})
|
|
})
|
|
it('select add', function(done){
|
|
instance.selectAdd({
|
|
table: 'think_tag',
|
|
where: {name: 'test'}
|
|
}).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "INSERT INTO `think_user` (`wid`,`title`,`cate_id`,`cate_no`) SELECT * FROM `think_tag` WHERE ( `name` = 'test' )")
|
|
done();
|
|
})
|
|
})
|
|
it('select add, instance', function(done){
|
|
var instance1 = new Base('tag', think.config('db'));
|
|
instance1.where({name: 'test'});
|
|
instance.selectAdd(instance1).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "INSERT INTO `think_user` (`wid`,`title`,`cate_id`,`cate_no`) SELECT * FROM `think_tag` WHERE ( `name` = 'test' )")
|
|
done();
|
|
})
|
|
})
|
|
it('count select', function(done){
|
|
instance.where({name: 'test'}).page(3).countSelect().then(function(data){
|
|
assert.deepEqual(data, {"count":399,"totalPages":40,"currentPage":3,"numsPerPage":10,"data":[{"id":7565,"title":"title1","cate_id":1,"cate_no":0},{"id":7564,"title":"title2","cate_id":2,"cate_no":977},{"id":7563,"title":"title3","cate_id":7,"cate_no":281},{"id":7562,"title":"title4","cate_id":6,"cate_no":242},{"id":7561,"title":"title5","cate_id":3,"cate_no":896},{"id":7560,"title":"title6","cate_id":3,"cate_no":897},{"id":7559,"title":"title7","cate_id":3,"cate_no":898},{"id":7558,"title":"title8","cate_id":17,"cate_no":151},{"id":7557,"title":"title9","cate_id":17,"cate_no":152}]})
|
|
done();
|
|
})
|
|
})
|
|
it('count select, pageFlag: true', function(done){
|
|
instance.where({name: 'test'}).page(3).countSelect(true).then(function(data){
|
|
assert.deepEqual(data, {"count":399,"totalPages":40,"currentPage":3,"numsPerPage":10,"data":[{"id":7565,"title":"title1","cate_id":1,"cate_no":0},{"id":7564,"title":"title2","cate_id":2,"cate_no":977},{"id":7563,"title":"title3","cate_id":7,"cate_no":281},{"id":7562,"title":"title4","cate_id":6,"cate_no":242},{"id":7561,"title":"title5","cate_id":3,"cate_no":896},{"id":7560,"title":"title6","cate_id":3,"cate_no":897},{"id":7559,"title":"title7","cate_id":3,"cate_no":898},{"id":7558,"title":"title8","cate_id":17,"cate_no":151},{"id":7557,"title":"title9","cate_id":17,"cate_no":152}]})
|
|
done();
|
|
})
|
|
})
|
|
it('count select, with count', function(done){
|
|
instance.where({name: 'test'}).page(3).countSelect(399).then(function(data){
|
|
assert.deepEqual(data, {"count":399,"totalPages":40,"currentPage":3,"numsPerPage":10,"data":[{"id":7565,"title":"title1","cate_id":1,"cate_no":0},{"id":7564,"title":"title2","cate_id":2,"cate_no":977},{"id":7563,"title":"title3","cate_id":7,"cate_no":281},{"id":7562,"title":"title4","cate_id":6,"cate_no":242},{"id":7561,"title":"title5","cate_id":3,"cate_no":896},{"id":7560,"title":"title6","cate_id":3,"cate_no":897},{"id":7559,"title":"title7","cate_id":3,"cate_no":898},{"id":7558,"title":"title8","cate_id":17,"cate_no":151},{"id":7557,"title":"title9","cate_id":17,"cate_no":152}]})
|
|
done();
|
|
})
|
|
})
|
|
it('count select, with count, beyond pages', function(done){
|
|
instance.where({name: 'test'}).page(300).countSelect(true).then(function(data){
|
|
assert.deepEqual(data, {"count":399,"totalPages":40,"currentPage":1,"numsPerPage":10,"data":[{"id":7565,"title":"title1","cate_id":1,"cate_no":0},{"id":7564,"title":"title2","cate_id":2,"cate_no":977},{"id":7563,"title":"title3","cate_id":7,"cate_no":281},{"id":7562,"title":"title4","cate_id":6,"cate_no":242},{"id":7561,"title":"title5","cate_id":3,"cate_no":896},{"id":7560,"title":"title6","cate_id":3,"cate_no":897},{"id":7559,"title":"title7","cate_id":3,"cate_no":898},{"id":7558,"title":"title8","cate_id":17,"cate_no":151},{"id":7557,"title":"title9","cate_id":17,"cate_no":152}]})
|
|
done();
|
|
})
|
|
})
|
|
it('count select, with count, beyond pages', function(done){
|
|
instance.where({name: 'test'}).page(300).countSelect(false).then(function(data){
|
|
assert.deepEqual(data, {"count":399,"totalPages":40,"currentPage":40,"numsPerPage":10,"data":[{"id":7565,"title":"title1","cate_id":1,"cate_no":0},{"id":7564,"title":"title2","cate_id":2,"cate_no":977},{"id":7563,"title":"title3","cate_id":7,"cate_no":281},{"id":7562,"title":"title4","cate_id":6,"cate_no":242},{"id":7561,"title":"title5","cate_id":3,"cate_no":896},{"id":7560,"title":"title6","cate_id":3,"cate_no":897},{"id":7559,"title":"title7","cate_id":3,"cate_no":898},{"id":7558,"title":"title8","cate_id":17,"cate_no":151},{"id":7557,"title":"title9","cate_id":17,"cate_no":152}]})
|
|
done();
|
|
})
|
|
})
|
|
it('get field', function(done){
|
|
instance.where({name: 'welefen'}).getField('title').then(function(data){
|
|
assert.deepEqual(data, [ 'title1', 'title2' ]);
|
|
done();
|
|
})
|
|
})
|
|
it('get field, with limit', function(done){
|
|
instance.where({name: 'welefen'}).getField('title', 1).then(function(data){
|
|
assert.deepEqual(data, [ 'title1' ]);
|
|
done();
|
|
})
|
|
})
|
|
it('get field, with true', function(done){
|
|
instance.where({name: 'welefen'}).getField('title', true).then(function(data){
|
|
assert.deepEqual(data, 'title1');
|
|
done();
|
|
})
|
|
})
|
|
it('get field, with mutil', function(done){
|
|
instance.where({name: 'welefen'}).getField('title,cate_no', true).then(function(data){
|
|
assert.deepEqual(data, { title: 'title1', cate_no: 1000 });
|
|
done();
|
|
})
|
|
})
|
|
it('get field, with mutil 1', function(done){
|
|
instance.where({name: 'welefen'}).getField('title,cate_no', 3).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT `title`,`cate_no` FROM `think_user` WHERE ( `name` = 'welefen' ) LIMIT 3");
|
|
assert.deepEqual(data, { title: [ 'title1', 'title2', 'title3' ], cate_no: [ 1000, 1001, 1002 ] });
|
|
done();
|
|
})
|
|
})
|
|
it('count', function(done){
|
|
instance.count().then(function(data){
|
|
assert.equal(data, 40000);
|
|
done();
|
|
})
|
|
})
|
|
it('sum', function(done){
|
|
instance.sum().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT SUM(id) AS think_sum FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('sum, with field', function(done){
|
|
instance.sum('id').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT SUM(id) AS think_sum FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('min', function(done){
|
|
instance.min().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT MIN(id) AS think_min FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('min, with field', function(done){
|
|
instance.min('id').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT MIN(id) AS think_min FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('max', function(done){
|
|
instance.max().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT MAX(id) AS think_max FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('max, with field', function(done){
|
|
instance.max('id').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT MAX(id) AS think_max FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('avg', function(done){
|
|
instance.avg().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT AVG(id) AS think_avg FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('avg, with field', function(done){
|
|
instance.avg('id').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT AVG(id) AS think_avg FROM `think_user` LIMIT 1");
|
|
assert.equal(data, 1000);
|
|
done();
|
|
})
|
|
})
|
|
it('query', function(done){
|
|
instance.query('SELECT * FROM __TABLE__ ').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT * FROM `think_user` ")
|
|
done();
|
|
})
|
|
})
|
|
it('query, tag', function(done){
|
|
instance.query('SELECT * FROM __TAG__ ').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "SELECT * FROM `think_tag` ")
|
|
done();
|
|
})
|
|
})
|
|
it('execute, tag', function(done){
|
|
instance.execute('UPDATE __TAG__ set name=1 where name=2').then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, "UPDATE `think_tag` set name=1 where name=2")
|
|
done();
|
|
})
|
|
})
|
|
it('startTrans', function(done){
|
|
instance.startTrans().then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, 'START TRANSACTION');
|
|
done();
|
|
})
|
|
})
|
|
it('commit', function(done){
|
|
instance.startTrans().then(function(){
|
|
return instance.commit();
|
|
}).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, 'COMMIT');
|
|
done();
|
|
})
|
|
})
|
|
it('rollback', function(done){
|
|
instance.startTrans().then(function(){
|
|
return instance.rollback();
|
|
}).then(function(data){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, 'ROLLBACK');
|
|
done();
|
|
})
|
|
})
|
|
it('transaction, commit', function(done){
|
|
instance.transaction(function(){
|
|
return instance.add({
|
|
name: 'welefen',
|
|
title: 'wwww'
|
|
})
|
|
}).then(function(){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, 'COMMIT');
|
|
done();
|
|
})
|
|
})
|
|
it('transaction, rollback', function(done){
|
|
instance.transaction(function(){
|
|
return Promise.reject(new Error('error'))
|
|
}).then(function(){
|
|
var sql = instance.getLastSql();
|
|
assert.equal(sql, 'ROLLBACK');
|
|
done();
|
|
})
|
|
})
|
|
after(function(){
|
|
muk.restore();
|
|
})
|
|
}) |