mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-25 14:42:47 +00:00
增加单元测试和优化代码
This commit is contained in:
parent
a229791ef8
commit
a000cc9f5f
@ -854,48 +854,42 @@ var Model = module.exports = Class(function(){
|
||||
});
|
||||
},
|
||||
/**
|
||||
* 获取一条记录的某个字段值
|
||||
* 获取某个字段下的记录
|
||||
* @return {[type]} [description]
|
||||
*/
|
||||
getField: function(field, sepa){
|
||||
field = field.trim();
|
||||
getField: function(field, one){
|
||||
var self = this;
|
||||
var multi = false;
|
||||
var parseOptions;
|
||||
return this.parseOptions({
|
||||
'field': field
|
||||
}).then(function(options){
|
||||
parseOptions = options;
|
||||
if (field.indexOf(',') > -1) {
|
||||
if (options.limit === undefined && isNumber(sepa)) {
|
||||
options.limit = sepa;
|
||||
}
|
||||
multi = true;
|
||||
}else{
|
||||
options.limit = isNumber(sepa) ? sepa : 1;
|
||||
return this.parseOptions({'field': field}).then(function(options){
|
||||
if (isNumber(one)) {
|
||||
options.limit = one;
|
||||
}else if (one === true) {
|
||||
options.limit = 1;
|
||||
}
|
||||
return self.db.select(options);
|
||||
}).then(function(data){
|
||||
var multi = field.indexOf(',') > -1;
|
||||
if (multi) {
|
||||
var length = field.split(',').length;
|
||||
field = Object.keys(data[0] || {});
|
||||
var key = field.shift();
|
||||
var key2 = field.shift();
|
||||
var cols = {};
|
||||
data.forEach(function(item){
|
||||
var name = item[key];
|
||||
if (length === 2) {
|
||||
cols[name] = item[key2];
|
||||
}else{
|
||||
cols[name] = isString(sepa) ? item.join(sepa) : item;
|
||||
}
|
||||
});
|
||||
return cols;
|
||||
var fields = field.split(/\s*,\s*/);
|
||||
var result = {};
|
||||
fields.forEach(function(item){
|
||||
result[item] = [];
|
||||
})
|
||||
data.every(function(item){
|
||||
fields.forEach(function(fItem){
|
||||
if (one === true) {
|
||||
result[fItem] = item[fItem];
|
||||
}else{
|
||||
result[fItem].push(item[fItem]);
|
||||
}
|
||||
})
|
||||
return one === true ? false : true;
|
||||
})
|
||||
return result;
|
||||
}else{
|
||||
if (sepa !== true && parseOptions.limit === 1) {
|
||||
return data[0];
|
||||
}
|
||||
return Object.values(data[0] || {})[0];
|
||||
data = data.map(function(item){
|
||||
return Object.values(item)[0];
|
||||
})
|
||||
return one === true ? data[0] : data;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -12,7 +12,8 @@ beforeEach(function(){
|
||||
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":""},{"Field":"md5","Type":"varchar(255)","Null":"NO","Key":"","Default":null,"Extra":""},{"Field":"width","Type":"int(11)","Null":"NO","Key":"","Default":"0","Extra":""},{"Field":"height","Type":"int(11)","Null":"NO","Key":"","Default":"0","Extra":""},{"Field":"pic_nums","Type":"int(11)","Null":"NO","Key":"MUL","Default":"0","Extra":""},{"Field":"view_nums","Type":"int(11)","Null":"NO","Key":"MUL","Default":"0","Extra":""},{"Field":"content","Type":"text","Null":"NO","Key":"","Default":null,"Extra":""},{"Field":"date","Type":"int(11)","Null":"NO","Key":"MUL","Default":null,"Extra":""},{"Field":"is_hide","Type":"tinyint(11)","Null":"YES","Key":"MUL","Default":"0","Extra":""},{"Field":"is_safe","Type":"tinyint(11)","Null":"YES","Key":"MUL","Default":"1","Extra":""}];
|
||||
return getPromise(data);
|
||||
}
|
||||
return getPromise([]);
|
||||
var data = [{"id":7565,"title":"米兰达·可儿干练服装写真大片","cate_id":1,"cate_no":0,"md5":"27e562c50195153d89c52072bd4c8d5a","width":936,"height":1177,"pic_nums":11,"view_nums":1965,"content":"","date":20140526,"is_hide":0,"is_safe":0},{"id":7564,"title":"[Beautyleg]2014.05.21 No.977 Cindy","cate_id":2,"cate_no":977,"md5":"e31b3202f3cefe9944fb0e086064694f","width":1600,"height":2400,"pic_nums":30,"view_nums":1558,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7563,"title":"[DISI第四印象]2014.05.21 NO.281","cate_id":7,"cate_no":281,"md5":"ea455be2cab6813964543662b462a550","width":960,"height":640,"pic_nums":30,"view_nums":2335,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7562,"title":"[PANS写真]2014-05-20 NO.242 小倩 套图","cate_id":6,"cate_no":242,"md5":"de775e0785c379ad853b2a299e4736cd","width":1600,"height":2397,"pic_nums":30,"view_nums":2013,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7561,"title":"[ROSI写真]2014.05.20 NO.896","cate_id":3,"cate_no":896,"md5":"65e4a012a123190184a07d87c21e9dec","width":1600,"height":1067,"pic_nums":30,"view_nums":1425,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7560,"title":"[ROSI写真]2014.05.21 NO.897","cate_id":3,"cate_no":897,"md5":"51477ddac8a1d67d30f83da66e0b9ff5","width":1600,"height":1067,"pic_nums":22,"view_nums":1433,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7559,"title":"[ROSI写真]2014.05.22 NO.898","cate_id":3,"cate_no":898,"md5":"a74d4a187ae126b1446503da309b56c9","width":796,"height":531,"pic_nums":30,"view_nums":1994,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7558,"title":"[ru1mm写真] 2014-05-20 NO.151","cate_id":17,"cate_no":151,"md5":"4818e310b0c983e17ae87414a808879d","width":1200,"height":1800,"pic_nums":30,"view_nums":2035,"content":"","date":20140524,"is_hide":0,"is_safe":0},{"id":7557,"title":"[ru1mm写真] 2014-05-22 NO.152","cate_id":17,"cate_no":152,"md5":"af8b033373b1526bd8a28053f065359f","width":1600,"height":1067,"pic_nums":30,"view_nums":1118,"content":"","date":20140524,"is_hide":0,"is_safe":0}]
|
||||
return getPromise(data);
|
||||
})
|
||||
});
|
||||
describe('Model', function(){
|
||||
@ -1618,6 +1619,111 @@ describe('Model', function(){
|
||||
})
|
||||
})
|
||||
})
|
||||
describe('updateInc', function(){
|
||||
var model = D('Group');
|
||||
it('update view_nums', function(done){
|
||||
model.where({id: 10}).updateInc('view_nums').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums+1 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums + 10', function(done){
|
||||
model.where({id: 10}).updateInc('view_nums', 10).then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums+10 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums + 10A', function(done){
|
||||
model.where({id: 10}).updateInc('view_nums', '10A').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums+10 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums + xxx', function(done){
|
||||
model.where({id: 10}).updateInc('view_nums', 'xxx').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums+1 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
describe('updateDec', function(){
|
||||
var model = D('Group');
|
||||
it('update view_nums', function(done){
|
||||
model.where({id: 10}).updateDec('view_nums').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums-1 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums - 10', function(done){
|
||||
model.where({id: 10}).updateDec('view_nums', 10).then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums-10 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums - 10A', function(done){
|
||||
model.where({id: 10}).updateDec('view_nums', '10A').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums-10 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('update view_nums - xxx', function(done){
|
||||
model.where({id: 10}).updateDec('view_nums', 'xxx').then(function(){
|
||||
var sql = model.getLastSql().trim();
|
||||
//console.log(sql);
|
||||
assert.equal(sql, "UPDATE `meinv_group` SET `view_nums`=view_nums-1 WHERE ( `id` = 10 )");
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('getField', function(){
|
||||
var model = D('Group');
|
||||
it('get id field', function(done){
|
||||
model.getField('id').then(function(data){
|
||||
assert.equal(JSON.stringify(data), '[7565,7564,7563,7562,7561,7560,7559,7558,7557]')
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('get id field limit 5', function(done){
|
||||
model.getField('id', 5).then(function(data){
|
||||
var sql = model.getLastSql().trim();
|
||||
assert.equal(sql, 'SELECT `id` FROM `meinv_group` LIMIT 5')
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('get id field by one', function(done){
|
||||
model.getField('id', true).then(function(data){
|
||||
var sql = model.getLastSql().trim();
|
||||
assert.equal(data, 7565);
|
||||
assert.equal(sql, 'SELECT `id` FROM `meinv_group` LIMIT 1')
|
||||
done();
|
||||
})
|
||||
})
|
||||
it('get multi field', function(done){
|
||||
model.getField('id,view_nums').then(function(data){
|
||||
var sql = model.getLastSql().trim();
|
||||
assert.equal(JSON.stringify(data), '{"id":[7565,7564,7563,7562,7561,7560,7559,7558,7557],"view_nums":[1965,1558,2335,2013,1425,1433,1994,2035,1118]}');
|
||||
assert.equal(sql, 'SELECT `id`,`view_nums` FROM `meinv_group`')
|
||||
done();
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user