diff --git a/static/cosmopolite.js b/static/cosmopolite.js index 4d33a22..de41397 100644 --- a/static/cosmopolite.js +++ b/static/cosmopolite.js @@ -228,6 +228,21 @@ Cosmopolite.prototype.getMessages = function(subject) { return this.subscriptions_[subjectString].messages; }; +/** + * Fetch the most recent message for a subject + * + * @param {!string} subject Subject name + * @const + */ +Cosmopolite.prototype.getLastMessage = function(subject) { + var messages = this.getMessages(subject); + if (messages.length) { + return messages[messages.length - 1]; + } else { + return null; + } +}; + /** * Fetch all current pins for a subject * diff --git a/static/test.js b/static/test.js index 4716f1d..471fa42 100644 --- a/static/test.js +++ b/static/test.js @@ -240,7 +240,7 @@ test('getMessages/subscribe', function() { }); asyncTest('subscribe barrier', function() { - expect(3); + expect(4); var subject = randstring(); var message = randstring(); @@ -254,6 +254,7 @@ asyncTest('subscribe barrier', function() { equal(cosmo.getMessages(subject).length, 1, 'one message'); equal(cosmo.getMessages(subject)[0]['subject']['name'], subject, 'subject matches'); equal(cosmo.getMessages(subject)[0]['message'], message, 'message matches'); + deepEqual(cosmo.getMessages(subject)[0], cosmo.getLastMessage(subject), 'getLastMessage works'); cosmo.shutdown(); start(); });