Add timestamp update interval test
Break out delay computation into its own function and add tests, including a regression test for #646. // FREEBIE
This commit is contained in:
parent
9b390baea0
commit
080c233a93
2 changed files with 26 additions and 9 deletions
|
@ -20,8 +20,18 @@
|
||||||
var result = this.getRelativeTimeSpanString(millis);
|
var result = this.getRelativeTimeSpanString(millis);
|
||||||
this.$el.text(result);
|
this.$el.text(result);
|
||||||
|
|
||||||
var delay;
|
|
||||||
var millis_since = millis_now - millis;
|
var millis_since = millis_now - millis;
|
||||||
|
var delay = this.computeDelay(millis_since);
|
||||||
|
if (delay) {
|
||||||
|
if (delay < 0) { delay = 1000; }
|
||||||
|
this.timeout = setTimeout(this.update.bind(this), delay);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clearTimeout: function() {
|
||||||
|
clearTimeout(this.timeout);
|
||||||
|
},
|
||||||
|
computeDelay: function(millis_since) {
|
||||||
|
var delay;
|
||||||
if (millis_since <= moment.relativeTimeThreshold('s') * 1000) {
|
if (millis_since <= moment.relativeTimeThreshold('s') * 1000) {
|
||||||
// a few seconds ago
|
// a few seconds ago
|
||||||
delay = 45 * 1000 - millis_since;
|
delay = 45 * 1000 - millis_since;
|
||||||
|
@ -42,14 +52,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return delay;
|
||||||
if (delay) {
|
|
||||||
if (delay < 0) { delay = 1000; }
|
|
||||||
this.timeout = setTimeout(this.update.bind(this), delay);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
clearTimeout: function() {
|
|
||||||
clearTimeout(this.timeout);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -69,4 +69,18 @@ describe('TimestampView', function() {
|
||||||
checkStartsWith(ext_view, new Date(2012, 4, 5, 17, 30, 0), 'May 5, 2012');
|
checkStartsWith(ext_view, new Date(2012, 4, 5, 17, 30, 0), 'May 5, 2012');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('updates at reasonable intervals', function() {
|
||||||
|
var view = new Whisper.TimestampView();
|
||||||
|
assert(view.computeDelay(1000) < 60 * 1000); // < minute
|
||||||
|
assert.strictEqual(view.computeDelay(1000 * 60 * 5), 60 * 1000); // minute
|
||||||
|
assert.strictEqual(view.computeDelay(1000 * 60 * 60 * 5), 60 * 60 * 1000); // hour
|
||||||
|
|
||||||
|
assert(view.computeDelay(6 * 24 * 60 * 60 * 1000) < 7 * 24 * 60 * 60 * 1000); // < week
|
||||||
|
|
||||||
|
// return falsey value for long ago dates that don't update
|
||||||
|
assert.notOk(view.computeDelay(1000 * 60 * 60 * 24 * 8));
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue