discourse/test/javascripts/lib/screen-track-test.js.es6
Mark VanLandingham 176aa0ac7d
DEV: Import pretender instead of global server var (#8996)
* DEV: Remove server global test variable

* Delete yarn-error.log

* prettier and some eslint fixes

* add global server variable back for plugins

* rename imported server to pretender

* prettier

* support plugin server. usage

* Export pretender as named

* Prettier

* change default pretender export

* fix bad import

* Use pretender() and original default export

* export new Pretender as default

* fix accidental change

* WIP testing

* add pretend handlers in correct location

* move more stuff into the correct pretender

* Consolidated more pretenders

* comment out another bad test

* fix user acceptance tests

* commented out bad test

* fixed another composer server stub

* fix more tests

* fixed tag test pretender

* Fix admin email test

* removed another draft handler

* add back test

* fix and uncomment another test

* remove test that is not useful

* remove commented out lines

* reapply handlers between every test

* no need to re-stub requests now :)

* cleanup from review

* more cleanup
2020-03-02 14:24:31 -05:00

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";
import pretender from "helpers/create-pretender";
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 = [];
pretender.post("/topics/timings", t => {
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);
});