64 lines
2.0 KiB
JavaScript
64 lines
2.0 KiB
JavaScript
import { TestCase } from "./framework/test_case.js";
|
|
import { setupDom, teardownDom } from "./framework/dom.js";
|
|
import { GameFeed } from "../client/js/feed.js";
|
|
|
|
const tick = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
|
export class GameFeedTest extends TestCase {
|
|
async test_lines_stack_with_the_newest_at_the_bottom() {
|
|
const env = await setupDom();
|
|
try {
|
|
const feed = new GameFeed(env.$("#game-feed"), { ttl: -1 });
|
|
feed.push("first");
|
|
feed.push("second");
|
|
const lines = env.$("#game-feed .feed-line");
|
|
this.assertSize(lines, 2);
|
|
this.assertEqual(lines.eq(0).text(), "first", "older lines stay on top");
|
|
this.assertEqual(lines.eq(1).text(), "second", "newest line is at the bottom");
|
|
feed.clear();
|
|
} finally {
|
|
teardownDom(env);
|
|
}
|
|
}
|
|
|
|
async test_alerts_are_marked() {
|
|
const env = await setupDom();
|
|
try {
|
|
const feed = new GameFeed(env.$("#game-feed"), { ttl: -1 });
|
|
feed.push("you are at war", { alert: true });
|
|
this.assertSize(env.$("#game-feed .feed-line.feed-alert"), 1);
|
|
feed.clear();
|
|
} finally {
|
|
teardownDom(env);
|
|
}
|
|
}
|
|
|
|
async test_lines_retire_on_their_own() {
|
|
const env = await setupDom();
|
|
try {
|
|
const feed = new GameFeed(env.$("#game-feed"), { ttl: 5, alertTtl: 5, fade: 0 });
|
|
feed.push("short lived");
|
|
this.assertSize(env.$("#game-feed .feed-line"), 1);
|
|
await tick(40);
|
|
this.assertSize(env.$("#game-feed .feed-line"), 0, "the line disappeared");
|
|
} finally {
|
|
teardownDom(env);
|
|
}
|
|
}
|
|
|
|
async test_clear_cancels_pending_retirements() {
|
|
const env = await setupDom();
|
|
try {
|
|
const feed = new GameFeed(env.$("#game-feed"), { ttl: 5, fade: 0 });
|
|
feed.push("one");
|
|
feed.push("two");
|
|
feed.clear();
|
|
this.assertSize(env.$("#game-feed .feed-line"), 0);
|
|
await tick(30);
|
|
this.assertSize(env.$("#game-feed .feed-line"), 0, "nothing reappears");
|
|
} finally {
|
|
teardownDom(env);
|
|
}
|
|
}
|
|
}
|