Files
Battle-for-Tismo/tests/feed_test.js

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);
}
}
}