Pin test, fixes, cleanup
This commit is contained in:
@@ -389,9 +389,11 @@ Cosmopolite.prototype.pin = function(subject, message) {
|
||||
'sender_message_id': id,
|
||||
};
|
||||
|
||||
this.pins_[id] = args;
|
||||
|
||||
this.sendRPC_('pin', args, resolve.bind(null, id));
|
||||
this.sendRPC_('pin', args, function() {
|
||||
this.pins_[id] = args;
|
||||
resolve(id);
|
||||
});
|
||||
}.bind(this));
|
||||
};
|
||||
|
||||
@@ -874,7 +876,11 @@ Cosmopolite.prototype.onSocketClose_ = function() {
|
||||
// We treat a disconnection as if all pins disappeared
|
||||
for (var subject in this.subscriptions_) {
|
||||
var subscription = this.subscriptions_[subject];
|
||||
subscription.pins.forEach(this.onUnpin_, this);
|
||||
subscription.pins.forEach(function(pin) {
|
||||
// Stupid hack that saves complexity elsewhere
|
||||
pin['message'] = JSON.stringify(pin['message']);
|
||||
this.onUnpin_(pin);
|
||||
}, this);
|
||||
}
|
||||
|
||||
this.createChannel_();
|
||||
|
||||
@@ -430,6 +430,37 @@ asyncTest('pin/unpin', function() {
|
||||
var pin = cosmo.pin(subject, message);
|
||||
});
|
||||
|
||||
asyncTest('Repin', function() {
|
||||
expect(8);
|
||||
|
||||
var subject = randstring();
|
||||
var message = randstring();
|
||||
|
||||
var pins = 0;
|
||||
|
||||
var callbacks = {
|
||||
'onPin': function(e) {
|
||||
equal(subject, e['subject']['name'], 'onPin: subject matches');
|
||||
equal(message, e['message'], 'onPin: message matches');
|
||||
equal(cosmo.getPins(subject).length, 1);
|
||||
if (++pins == 1) {
|
||||
cosmo.socket_.close();
|
||||
} else {
|
||||
cosmo.shutdown();
|
||||
start();
|
||||
}
|
||||
},
|
||||
'onUnpin': function(e) {
|
||||
equal(subject, e['subject']['name'], 'onUnpin: subject matches');
|
||||
equal(message, e['message'], 'onUnpin: message matches');
|
||||
},
|
||||
}
|
||||
|
||||
var cosmo = new Cosmopolite(callbacks, null, randstring());
|
||||
cosmo.subscribe(subject);
|
||||
var pin = cosmo.pin(subject, message);
|
||||
});
|
||||
|
||||
|
||||
module('dev_appserver only');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user