mirror of
https://github.com/discourse/discourse.git
synced 2024-12-13 14:53:43 +08:00
a80c1f4011
The test works when it is run alone, but somehow leaks state Will work on improving it next week
77 lines
1.7 KiB
JavaScript
77 lines
1.7 KiB
JavaScript
import TopicTrackingState from "discourse/models/topic-tracking-state";
|
|
import Session from "discourse/models/session";
|
|
import ScreenTrack from "discourse/lib/screen-track";
|
|
|
|
let clock;
|
|
|
|
QUnit.module("lib:screen-track", {
|
|
beforeEach() {
|
|
clock = sinon.useFakeTimers(new Date(2012, 11, 31, 12, 0).getTime());
|
|
},
|
|
|
|
afterEach() {
|
|
clock.restore();
|
|
}
|
|
});
|
|
|
|
// skip for now test leaks state
|
|
QUnit.skip("Correctly flushes posts as needed", assert => {
|
|
const timings = [];
|
|
|
|
// prettier-ignore
|
|
server.post("/topics/timings", t => { //eslint-disable-line
|
|
timings.push(t);
|
|
return [200, {}, ""];
|
|
});
|
|
|
|
const trackingState = TopicTrackingState.create();
|
|
const siteSettings = {
|
|
flush_timings_secs: 60
|
|
};
|
|
|
|
const currentUser = { id: 1, username: "sam" };
|
|
|
|
const tracker = new ScreenTrack(
|
|
trackingState,
|
|
siteSettings,
|
|
Session.current(),
|
|
currentUser
|
|
);
|
|
|
|
const topicController = null;
|
|
|
|
Discourse.set("hasFocus", true);
|
|
|
|
tracker.reset();
|
|
tracker.start(1, topicController);
|
|
|
|
tracker.setOnscreen([1, 2, 3], [1, 2, 3]);
|
|
|
|
clock.tick(1050);
|
|
clock.tick(1050);
|
|
|
|
// no ajax yet
|
|
assert.equal(0, timings.length);
|
|
|
|
tracker.setOnscreen([1, 2, 3, 4], [1, 2, 3]);
|
|
|
|
clock.tick(1050);
|
|
clock.tick(1050);
|
|
|
|
// we should be rushed now cause there is a new thing on the screen
|
|
assert.equal(1, timings.length);
|
|
|
|
const req =
|
|
"timings%5B1%5D=3000&timings%5B2%5D=3000&timings%5B3%5D=3000&timings%5B4%5D=1000&topic_time=3000&topic_id=1";
|
|
assert.equal(timings[0].requestBody, req);
|
|
|
|
tracker.stop();
|
|
|
|
assert.equal(2, timings.length);
|
|
|
|
const req2 =
|
|
"timings%5B1%5D=1200&timings%5B2%5D=1200&timings%5B3%5D=1200&timings%5B4%5D=1200&topic_time=1200&topic_id=1";
|
|
|
|
assert.equal(timings[1].requestBody, req2);
|
|
});
|