From dcebaebfc2391533ee9c22ad41aef4863424cd83 Mon Sep 17 00:00:00 2001 From: lichengyin Date: Fri, 27 Nov 2015 10:17:54 +0800 Subject: [PATCH] improve test case --- src/adapter/db/sqlite.js | 6 +++--- test/adapter/db/sqlite.js | 35 +++++++++++++++++++++++++++++++---- test/adapter/session/db.js | 24 ++++++++++++++++++++++++ test/adapter/session/file.js | 15 +++++++++++++++ test/adapter/session/redis.js | 16 ++++++++++++++++ test/adapter/socket/mysql.js | 11 +++++++++++ 6 files changed, 100 insertions(+), 7 deletions(-) diff --git a/src/adapter/db/sqlite.js b/src/adapter/db/sqlite.js index 8e4acaa9..d2e56f4e 100644 --- a/src/adapter/db/sqlite.js +++ b/src/adapter/db/sqlite.js @@ -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; diff --git a/test/adapter/db/sqlite.js b/test/adapter/db/sqlite.js index 4d811168..f2e1fa6f 100644 --- a/test/adapter/db/sqlite.js +++ b/test/adapter/db/sqlite.js @@ -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(); }) }) }) \ No newline at end of file diff --git a/test/adapter/session/db.js b/test/adapter/session/db.js index d34dfff8..c69feaed 100644 --- a/test/adapter/session/db.js +++ b/test/adapter/session/db.js @@ -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(){ diff --git a/test/adapter/session/file.js b/test/adapter/session/file.js index 32c4dd8e..c5accc49 100644 --- a/test/adapter/session/file.js +++ b/test/adapter/session/file.js @@ -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 = { diff --git a/test/adapter/session/redis.js b/test/adapter/session/redis.js index 90eafcb9..54639ce5 100644 --- a/test/adapter/session/redis.js +++ b/test/adapter/session/redis.js @@ -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'})); diff --git a/test/adapter/socket/mysql.js b/test/adapter/socket/mysql.js index 9c24e00c..360986a2 100644 --- a/test/adapter/socket/mysql.js +++ b/test/adapter/socket/mysql.js @@ -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(){