UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

80 lines (64 loc) 1.82 kB
define([ 'intern!object', 'intern/chai!assert', 'dojo/aspect', '../../topic' ], function (registerSuite, assert, aspect, topic) { var aspectHandle, subscriptionHandles = []; registerSuite({ name: 'dojo/topic', setup: function () { aspectHandle = aspect.after(topic, 'subscribe', function (handle) { subscriptionHandles.push(handle); return handle; }); }, teardown: function () { aspectHandle.remove(); }, afterEach: function () { while (subscriptionHandles.length > 0) { subscriptionHandles.pop().remove(); } }, '.subscribe and .publish': function () { var listenerCallCount = 0, expectedArgument; topic.subscribe('/test/foo', function (event) { assert.strictEqual(event, expectedArgument); listenerCallCount++; }); expectedArgument = 'bar'; topic.publish('/test/foo', expectedArgument); assert.strictEqual(listenerCallCount, 1); expectedArgument = 'baz'; topic.publish('/test/foo', expectedArgument); assert.strictEqual(listenerCallCount, 2); }, 'unsubscribing': function () { var listenerCalled = false; var handle = topic.subscribe('/test/foo', function () { listenerCalled = true; }); handle.remove(); topic.publish('/test/foo', 'bar'); assert.isFalse(listenerCalled); }, 'publish argument arity': function () { var publishArguments = [ '/test/topic' ], actualArguments; topic.subscribe('/test/topic', function () { actualArguments = Array.prototype.slice.call(arguments); }); for (var i = 0; i <= 5; ++i) { if (i > 0) { publishArguments.push({ value: 'value-' + i }); } topic.publish.apply(topic, publishArguments); assert.equal(actualArguments.length, i); assert.deepEqual(actualArguments, publishArguments.slice(1)); } } }); });