Add test for duplicate message suppression. Fix totally broken subscribe by key code.

This commit is contained in:
Ian Gulliver
2014-05-17 18:04:57 +03:00
parent 966c6c8c50
commit 1a66b86c13
2 changed files with 34 additions and 2 deletions

4
api.py
View File

@@ -77,9 +77,9 @@ def Subscribe(google_user, client, args):
'events': models.Subscription.FindOrCreate(subject, client, messages),
}
for key in keys:
message = models.Subject.GetKey(key)
message = subject.GetKey(key)
if message:
ret['events'].append(message)
ret['events'].append(message.ToEvent())
return ret

View File

@@ -199,6 +199,38 @@ asyncTest('subscribe/unsubscribe Promise', function() {
});
});
asyncTest('Duplicate message suppression', function() {
expect(3);
var subject = randstring();
var key = randstring();
var message1 = randstring();
var message2 = randstring();
var callbacks = {
'onMessage': function (msg) {
equal(msg['subject'], subject, 'subject matches');
equal(msg['key'], key, 'key matches');
equal(msg['message'], message1, 'message matches');
cosmo.shutdown();
start();
},
};
var cosmo = new Cosmopolite(callbacks, null, randstring());
// Break cosmo's UUID generator so that it generates duplicate values.
cosmo.uuid_ = function() {
return '4';
// chosen by fair dice roll.
// guaranteed to be random.
};
cosmo.sendMessage(subject, message1, key).then(function() {
cosmo.sendMessage(subject, message2, key).then(function() {
cosmo.subscribe(subject, 0, [key]);
});
});
});
module('dev_appserver only');