diff --git a/static/test.js b/static/test.js index 2296d98..9eb2dfd 100644 --- a/static/test.js +++ b/static/test.js @@ -25,9 +25,6 @@ server interactions are complex and tests should be structured to verify them, not to verify the behavior of a simulation. */ -QUnit.begin(localStorage.clear.bind(localStorage)); -QUnit.done(localStorage.clear.bind(localStorage)); - var randstring = function() { var ret = []; for (var i = 0; i < 16; i++) { @@ -37,6 +34,11 @@ var randstring = function() { return ret.join(''); }; +QUnit.begin(localStorage.clear.bind(localStorage)); +QUnit.done(localStorage.clear.bind(localStorage)); + +module('General'); + test('Construct/shutdown', function() { expect(2); var cosmo = new Cosmopolite({}); @@ -140,3 +142,41 @@ asyncTest('Overwrite key', function() { var cosmo1 = new Cosmopolite(callbacks1, null, randstring()); var cosmo2 = new Cosmopolite(callbacks2, null, randstring()); }); + +asyncTest('Complex object', function() { + expect(2); + + var subject = randstring(); + var message = { + 'foo': 'bar', + 5: 'zig', + 'zag': [16, 22, 59, 76], + 'boo': { + 'nested': 'object', + 10: 100, + }, + 'unicode': '☠☣☃𠜎', + }; + + var callbacks1 = { + 'onReady': function() { + cosmo1.sendMessage(subject, message); + }, + }; + + var callbacks2 = { + 'onReady': function() { + cosmo2.subscribe(subject, -1); + }, + 'onMessage': function(e) { + equal(e['subject'], subject, 'subject matches'); + deepEqual(e['message'], message, 'message matches'); + cosmo1.shutdown(); + cosmo2.shutdown(); + start(); + }, + }; + + var cosmo1 = new Cosmopolite(callbacks1, null, randstring()); + var cosmo2 = new Cosmopolite(callbacks2, null, randstring()); +});