thinkjs/test/core/base.js
2016-01-04 09:42:19 +08:00

120 lines
2.7 KiB
JavaScript

var assert = require('assert');
var path = require('path');
var fs = require('fs');
var muk = require('muk');
require('../../lib/core/think.js');
var Base = think.safeRequire(path.resolve(__dirname, '../../lib/core/base.js'));
var Cls = think.Class(Base, {
__before: function(){
this.name = 'name';
},
getName: function(){
return this.name;
},
__after: function(){
this.name = '';
}
})
var Cls1 = think.Class(Base, {
getName: function(){
return this.name;
},
__after: function(){
this.name = 'after';
return this.name;
}
})
var Cls2 = think.Class(Base, {
getName: function(){
return this.name;
},
__before: function(){
this.name = 'before';
}
})
var Cls3 = think.Class(Base, {
getName: function(name){
this.name = name;
return this.name;
},
__before: function(){
this.name = 'before';
}
})
var Cls4 = think.Class(Base, {
getName: function(name){
this.name = name;
return this.name;
},
__before: undefined,
__after: undefined
})
describe('core/base.js', function(){
it('Base is function', function(){
assert.equal(typeof Base, 'function')
})
it('cls inherit Base, __before, __after', function(done){
var instance = new Cls();
var name = instance.invoke('getName');
name.then(function(data){
assert.equal(data, 'name');
var afterName = instance.getName();
assert.equal(afterName, '');
done();
})
})
it('cls inherit Base, __after', function(done){
var instance = new Cls1();
var name = instance.invoke('getName');
name.then(function(data){
assert.equal(data, undefined);
var afterName = instance.getName();
assert.equal(afterName, 'after');
done();
})
})
it('cls inherit Base, __before', function(done){
var instance = new Cls2();
var name = instance.invoke('getName');
name.then(function(data){
assert.equal(data, 'before');
var afterName = instance.getName();
assert.equal(afterName, 'before');
done();
})
})
it('cls inherit Base, args', function(done){
var instance = new Cls3();
var name = instance.invoke('getName', 'getName');
name.then(function(data){
assert.equal(data, 'getName');
var afterName = instance.getName();
assert.equal(afterName, undefined);
done();
})
})
it('no __before & __after', function(done){
var instance = new Cls4();
instance.invoke('basename', 'getName.js').then(function(data){
assert.deepEqual(data, 'getName');
done();
}).catch(function(err){
console.log(err.stack)
});
})
it('basename', function(){
var instance = new Base();
var ret = instance.basename(__filename);
assert.equal(ret, 'base')
})
})