1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 'use strict';
- 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());
- });
- });
- });
|