mirror of
https://github.com/thinkjs/thinkjs.git
synced 2026-01-18 14:26:56 +00:00
improve test case
This commit is contained in:
parent
df0a5d4daf
commit
dcebaebfc2
@ -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;
|
||||
|
||||
@ -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();
|
||||
})
|
||||
})
|
||||
})
|
||||
@ -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(){
|
||||
|
||||
@ -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 = {
|
||||
|
||||
@ -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'}));
|
||||
|
||||
@ -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(){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user