improve test case

This commit is contained in:
lichengyin 2015-11-27 10:17:54 +08:00
parent df0a5d4daf
commit dcebaebfc2
6 changed files with 100 additions and 7 deletions

View File

@ -29,11 +29,11 @@ export default class extends Base {
*/
async getFields(table){
let fieldPromise = this.query(`PRAGMA table_info( ${table} )`);
let indexPromise = this.query(`PRAGMA INDEX_LIST(${table})`).then(async list => {
let indexPromise = this.query(`PRAGMA INDEX_LIST( ${table} )`).then(async list => {
let indexes = {};
let promises = list.map(async item => {
if(item.unique){
let list = await this.query(`PRAGMA index_info(${item.name})`);
let list = await this.query(`PRAGMA index_info( ${item.name} )`);
list.forEach(item => {
indexes[item.name] = {unique: true};
});
@ -52,7 +52,7 @@ export default class extends Base {
default: item.dflt_value,
primary: !!item.pk,
auto_increment: false,
unique: !item.pk && indexes[item.name] && indexes[item.name].unique
unique: !!(!item.pk && indexes[item.name] && indexes[item.name].unique)
};
});
return ret;

View File

@ -66,14 +66,41 @@ describe('adapter/db/sqlite', function(){
var str = instance.parseLimit([12, 10]);
assert.equal(str, ' LIMIT 10 OFFSET 12')
})
it('get fields', function(){
it('get fields', function(done){
var instance = new Sqlite();
instance.query = function(sql){
assert.equal(sql, 'PRAGMA table_info( user )')
return [{"cid":0,"name":"id","type":"INTEGER","notnull":1,"dflt_value":null,"pk":1},{"cid":1,"name":"name","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":2,"name":"pwd","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":3,"name":"create_time","type":"INTEGER","notnull":1,"dflt_value":null,"pk":0}];
if(sql === 'PRAGMA table_info( user )'){
return Promise.resolve([{"cid":0,"name":"id","type":"INTEGER","notnull":1,"dflt_value":null,"pk":1},{"cid":1,"name":"name","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":2,"name":"pwd","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":3,"name":"create_time","type":"INTEGER","notnull":1,"dflt_value":null,"pk":0}]);
}
return Promise.resolve([]);
}
instance.getFields('user').then(function(data){
assert.deepEqual(data, {"id":{"name":"id","type":"INTEGER","required":true,"default":null,"primary":true,"auto_increment":false},"name":{"name":"name","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false},"pwd":{"name":"pwd","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false},"create_time":{"name":"create_time","type":"INTEGER","required":true,"default":null,"primary":false,"auto_increment":false}})
assert.deepEqual(data, {"id":{"name":"id","type":"INTEGER","required":true,"default":null,"primary":true,"auto_increment":false,"unique":false},"name":{"name":"name","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false,"unique":false},"pwd":{"name":"pwd","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false,"unique":false},"create_time":{"name":"create_time","type":"INTEGER","required":true,"default":null,"primary":false,"auto_increment":false,"unique":false}})
done();
})
})
it('getFields 1', function(done){
var instance = new Sqlite();
instance.query = function(sql){
if(sql === 'PRAGMA table_info( user )'){
return Promise.resolve([{"cid":0,"name":"id","type":"INTEGER","notnull":1,"dflt_value":null,"pk":1},{"cid":1,"name":"name","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":2,"name":"pwd","type":"TEXT","notnull":1,"dflt_value":null,"pk":0},{"cid":3,"name":"create_time","type":"INTEGER","notnull":1,"dflt_value":null,"pk":0}]);
}else if(sql === 'PRAGMA INDEX_LIST( user )'){
return Promise.resolve([{
name: 'xxxx',
unique: true
}, {
name: 'test'
}]);
}else if(sql === 'PRAGMA index_info( xxxx )'){
return Promise.resolve([{
name: 'name'
}])
}
return Promise.resolve([]);
}
instance.getFields('user').then(function(data){
assert.deepEqual(data, {"id":{"name":"id","type":"INTEGER","required":true,"default":null,"primary":true,"auto_increment":false,"unique":false},"name":{"name":"name","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false,"unique":true},"pwd":{"name":"pwd","type":"TEXT","required":true,"default":null,"primary":false,"auto_increment":false,"unique":false},"create_time":{"name":"create_time","type":"INTEGER","required":true,"default":null,"primary":false,"auto_increment":false,"unique":false}});
done();
})
})
})

View File

@ -68,6 +68,18 @@ describe('adapter/session/db', function(){
assert.deepEqual(instance.data, {name: 'thinkjs', value: '2.0'});
done();
})
})
it('get data, normal 2', function(done){
var instance = new DbSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.model.find = function(){
return {expire: Date.now() + 100000, data: JSON.stringify({name: 'thinkjs', value: '2.0'})};
}
//get data multi
instance.getData();
instance.getData().then(function(){
assert.deepEqual(instance.data, {name: 'thinkjs', value: '2.0'});
done();
})
})
it('get data, parse error', function(done){
var instance = new DbSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
@ -100,6 +112,18 @@ describe('adapter/session/db', function(){
done();
})
})
it('get data, all 1', function(done){
var instance = new DbSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.getData = function(){
instance.data = {name: 'wwww'};
return Promise.resolve();
}
instance.get();
instance.get().then(function(data){
assert.deepEqual(data, {name: 'wwww'});
done();
})
})
it('get data, item', function(done){
var instance = new DbSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.getData = function(){

View File

@ -72,6 +72,21 @@ describe('adapter/session/file', function(){
done();
})
})
it('getData, empty 2', function(done){
var instance = new FileSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.store = {
get: function(){
return Promise.resolve(JSON.stringify({
expire: Date.now() + 10000
}))
}
}
instance.getData();
return instance.getData().then(function(data){
assert.deepEqual(data, {});
done();
})
})
it('getData, error', function(done){
var instance = new FileSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.store = {

View File

@ -69,6 +69,22 @@ describe('adapter/session/redis', function(){
assert.deepEqual(data, {});
done();
})
})
it('getData, from redis, empty 1', function(done){
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));
instance.getRedisInstance = function(){
return {
get: function(cookie){
assert.equal(cookie, 'welefen');
return Promise.resolve(null)
}
}
}
instance.getData()
instance.getData().then(function(data){
assert.deepEqual(data, {});
done();
})
})
it('get, item', function(done){
var instance = new RedisSession(think.extend({}, think.config('session'), {cookie: 'welefen'}));

View File

@ -187,6 +187,17 @@ describe('adapter/socket/mysql', function(){
done();
});
});
it('query connention_lost', function(done){
var socket = new MysqlSocket();
var flag = false;
socket.close = function(){
flag = true;
}
socket.query('SELECT * FROM `connention_lost`').catch(function(){
assert.equal(flag, true);
done();
});
});
it('query error', function(done){
var socket = new MysqlSocket();
socket.query('SELECT * FROM `query_error`').catch(function(){