Skip to content

Commit

Permalink
Add testcase for Silence mixin.
Browse files Browse the repository at this point in the history
  • Loading branch information
GCheung55 committed Nov 9, 2013
1 parent 1b93abf commit ad0ead6
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
2 changes: 2 additions & 0 deletions mixins/silence.js
Expand Up @@ -4,6 +4,7 @@
var Silence = new Class({
_silent: 0,

// Silence the object before running the function
silence: function(fnc){
this._silent++;
fnc && fnc.call(this);
Expand All @@ -12,6 +13,7 @@ var Silence = new Class({
return this;
},

// Check if object is silent
isSilent: function(){
return !!this._silent;
}
Expand Down
79 changes: 79 additions & 0 deletions test/silence-test.js
@@ -0,0 +1,79 @@
if (typeof module == "object" && typeof require == "function") {
var buster = require("buster");
var Neuro = require('../');
}

var testCase = buster.testCase;
var assert = buster.assert;
var refute = buster.refute;

var Silence = Neuro.Mixins.Silence

testCase('Neuro Mixin: Silence', {
setUp: function(){
this.silence = new Silence;
},

'method isSilent returns a boolean based on _silent property': function(){
var _silent = this.silence._silent;
var test = this.silence.isSilent();

assert.equals(_silent, 0);
assert.equals(test, false);
},

'method silence': {
'invoke fnc with silence instance as scope': function(){
var spy = this.spy();
var silence = this.silence;

silence.silence(spy);

assert.calledOnce(spy);
assert.equals(spy.thisValues[0], silence);
},

'will have isSilent return true/false before/after fnc': function(){
var silence = this.silence;
var result1 = silence.isSilent();
var result2, result3;

var fnc = function(){
result2 = this.isSilent();
};

silence.silence(fnc);
result3 = silence.isSilent();

assert.equals(result1, false);
assert.equals(result2, true);
assert.equals(result3, false);

},

'with nested silence calls will have isSilent return true to signify continued silence, until all nested fnc are completed': function(){
var silence = this.silence;
var result1 = silence.isSilent();
var result2, result3, result4, result5;

var fnc1 = function(){
result2 = this.isSilent();
this.silence(fnc2);
result3 = this.isSilent();
};

var fnc2 = function(){
result4 = this.isSilent();
};

silence.silence(fnc1);
result5 = silence.isSilent();

assert.equals(result1, false);
assert.equals(result2, true);
assert.equals(result3, true);
assert.equals(result4, true);
assert.equals(result5, false);
}
}
});

0 comments on commit ad0ead6

Please sign in to comment.