pubsub-js-ssr
Version:
Dependency free publish/subscribe library. Fork from pubsub-js but supporting ssr.
93 lines (75 loc) • 3.12 kB
JavaScript
;
var PubSub = require('../src/pubsub'),
TestHelper = require('../test/helper'),
assert = require('referee').assert,
refute = require('referee').refute;
describe( 'subscribe method', function() {
it('should return token as String', function(){
var func = function(){ return undefined; },
message = TestHelper.getUniqueString(),
token = PubSub.subscribe( message , func );
assert.isString( token );
});
it('should return new token for several subscriptions with same function', function(){
var func = function(){ return undefined; },
tokens = [],
iterations = 10,
message = TestHelper.getUniqueString(),
i;
// build an array of tokens
for ( i = 0; i < iterations; i++ ){
tokens.push( PubSub.subscribe( message, func ) );
}
// make sure all tokens are different
TestHelper.assertAllTokensDifferent( tokens );
});
it('should return unique tokens for each namespaced subscription', function(){
var func = function(){ return undefined; },
tokens = [],
messages = ['library', 'library.music', 'library.music.jazz'],
i;
// build an array of tokens
for ( i = 0; i < messages.length; i++ ){
tokens.push( PubSub.subscribe( messages[i], func ) );
}
// make sure all tokens are different
TestHelper.assertAllTokensDifferent( tokens );
});
it('should return unique token for unique functions', function(){
var tokens = [],
iterations = 10,
message = TestHelper.getUniqueString(),
i;
function bakeFunc( value ){
return function(){
return value;
};
}
// build an array of tokens, passing in a different function for each subscription
for ( i = 0; i < iterations; i++ ){
tokens.push( PubSub.subscribe( message, bakeFunc( i ) ) );
}
// make sure all tokens are different
TestHelper.assertAllTokensDifferent( tokens );
});
it('should return false when subscriber argument is not a function', function(){
var invalidSubscribers = [undefined, null, 'a string', 123, [], {}, new Date()],
topic = TestHelper.getUniqueString(),
i;
for ( i = 0; i < invalidSubscribers.length; i++ ){
assert.equals(PubSub.subscribe(topic, invalidSubscribers[i]), false);
}
assert.equals(i, invalidSubscribers.length);
});
it('must not throw errors when publishing with invalid subscribers', function(){
var invalidSubscribers = [undefined, null, 'a string', 123, [], {}, new Date()],
topic = TestHelper.getUniqueString(),
i;
for (i = 0; i < invalidSubscribers.length; i++){
PubSub.subscribe(topic, invalidSubscribers[i]);
}
refute.exception(function(){
PubSub.publish(topic, TestHelper.getUniqueString());
});
});
});