2015-12-17 20:05:38 +08:00

92 lines
2.5 KiB
JavaScript

'use strict';
var assert = require('assert');
var path = require('path');
var fs = require('fs');
var muk = require('muk');
for(var filepath in require.cache){
delete require.cache[filepath];
}
var Index = require('../../../lib/index.js');
var instance = new Index();
instance.load();
think.APP_PATH = path.dirname(__dirname) + think.sep + 'testApp';
var BaseSocket = think.adapter('socket', 'base');
describe('adapter/socket/base', function(){
it('get instance', function(){
var instance = new BaseSocket();
assert.deepEqual(instance.queueNums, 0);
assert.equal(instance.closeTimer, 0)
})
it('log connect', function(){
var instance = new BaseSocket();
instance.config = {log_connect: true};
muk(think, 'log', function(fn, type){
assert.equal(type, 'SOCKET');
var str = fn && fn({magenta: function(){}});
assert.equal(str.indexOf('Connect') > -1, true)
})
instance.logConnect();
muk.restore();
})
it('log connect off', function(){
var instance = new BaseSocket();
instance.config = {log_connect: false};
var flag = false;
muk(think, 'log', function(fn, type){
flag = true;
})
instance.logConnect();
muk.restore();
assert.equal(flag, false);
})
it('autoClose off', function(){
var instance = new BaseSocket();
think.config('auto_close_socket', false);
var data = instance.autoClose({});
assert.deepEqual(data, {})
})
it('autoClose on', function(done){
var instance = new BaseSocket();
think.config('auto_close_socket', true);
var promise = Promise.resolve();
var data = instance.autoClose(promise);
muk(global, 'setTimeout', function(fn){
fn && fn();
})
data.then(function(data){
think.config('auto_close_socket', false);
muk.restore();
done();
})
})
it('autoClose on, queueNums > 0', function(done){
var instance = new BaseSocket();
think.config('auto_close_socket', true);
instance.queueNums = 3;
var promise = Promise.resolve();
var data = instance.autoClose(promise);
data.then(function(data){
think.config('auto_close_socket', false);
done();
})
})
it('autoClose on, reject promise', function(done){
var instance = new BaseSocket();
think.config('auto_close_socket', true);
instance.queueNums = 3;
var promise = Promise.reject();
var data = instance.autoClose(promise);
data.catch(function(data){
think.config('auto_close_socket', false);
done();
})
})
})