thinkjs/test/adapter/db/sqlite.js
2016-03-17 18:36:04 +08:00

107 lines
4.4 KiB
JavaScript

'use strict';
var assert = require('assert');
var path = require('path');
var fs = require('fs');
var muk = require('muk');
var Index = require('../../../lib/index.js');
var instance = new Index();
instance.load();
think.APP_PATH = path.dirname(__dirname) + think.sep + 'testApp';
var Sqlite = think.safeRequire(path.resolve(__dirname, '../../../lib/adapter/db/sqlite.js'));
describe('adapter/db/sqlite', function(){
it('get instance', function(){
var instance = new Sqlite();
assert.equal(instance._socket, null)
})
it('get socket', function(){
var instance = new Sqlite();
var socket = instance.socket();
assert.equal(instance._socket == socket, true);
})
it('get socket, again', function(){
var instance = new Sqlite();
var socket = instance.socket();
var socket1 = instance.socket();
assert.equal(socket1 == socket, true);
})
it('escape string', function(){
var instance = new Sqlite();
var str = instance.escapeString("welefen'suredy");
assert.equal(str, "welefen\'\'suredy");
})
it('escape string, multi', function(){
var instance = new Sqlite();
var str = instance.escapeString("welefen'sur'edy");
assert.equal(str, "welefen\'\'sur\'\'edy");
})
it('parseLimit, empty', function(){
var instance = new Sqlite();
var str = instance.parseLimit();
assert.equal(str, '')
})
it('parseLimit, number', function(){
var instance = new Sqlite();
var str = instance.parseLimit(12);
assert.equal(str, ' LIMIT 12')
})
it('parseLimit, string', function(){
var instance = new Sqlite();
var str = instance.parseLimit('12');
assert.equal(str, ' LIMIT 12')
})
it('parseLimit, string 1', function(){
var instance = new Sqlite();
var str = instance.parseLimit('12, 10');
assert.equal(str, ' LIMIT 10 OFFSET 12')
})
it('parseLimit, array', function(){
var instance = new Sqlite();
var str = instance.parseLimit([12, 10]);
assert.equal(str, ' LIMIT 10 OFFSET 12')
})
it('get fields', 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}]);
}
return Promise.resolve([]);
}
instance.getSchema('user').then(function(data){
assert.deepEqual(data, {"id":{"name":"id","type":"INTEGER","required":true,"primary":true,"auto_increment":false,"unique":false},"name":{"name":"name","type":"TEXT","required":true,"primary":false,"auto_increment":false,"unique":false},"pwd":{"name":"pwd","type":"TEXT","required":true,"primary":false,"auto_increment":false,"unique":false},"create_time":{"name":"create_time","type":"INTEGER","required":true,"primary":false,"auto_increment":false,"unique":false}})
done();
})
})
it('getSchema 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.getSchema('user').then(function(data){
assert.deepEqual(data, {"id":{"name":"id","type":"INTEGER","required":true,"primary":true,"auto_increment":false,"unique":false},"name":{"name":"name","type":"TEXT","required":true,"primary":false,"auto_increment":false,"unique":true},"pwd":{"name":"pwd","type":"TEXT","required":true,"primary":false,"auto_increment":false,"unique":false},"create_time":{"name":"create_time","type":"INTEGER","required":true,"primary":false,"auto_increment":false,"unique":false}});
done();
})
})
})