Files
Battle-for-Tismo/tests/menu_background_test.js
T

59 lines
1.9 KiB
JavaScript

import { TestCase } from "./framework/test_case.js";
import { setupDom, teardownDom } from "./framework/dom.js";
import {
MENU_BACKGROUNDS,
applyMenuBackground,
pickMenuBackground,
} from "../client/js/menu_background.js";
function fakeBody() {
const classes = new Set();
return {
classList: {
add: (name) => classes.add(name),
remove: (name) => classes.delete(name),
contains: (name) => classes.has(name),
},
};
}
export class MenuBackgroundTest extends TestCase {
test_ships_two_distinct_backgrounds() {
this.assertSize(MENU_BACKGROUNDS, 2);
this.assertNotEqual(MENU_BACKGROUNDS[0].source, MENU_BACKGROUNDS[1].source);
this.assertNotEqual(MENU_BACKGROUNDS[0].class, MENU_BACKGROUNDS[1].class);
}
test_random_pick_covers_both_ends() {
this.assertEqual(pickMenuBackground(() => 0), MENU_BACKGROUNDS[0]);
this.assertEqual(pickMenuBackground(() => 0.499), MENU_BACKGROUNDS[0]);
this.assertEqual(pickMenuBackground(() => 0.5), MENU_BACKGROUNDS[1]);
this.assertEqual(pickMenuBackground(() => 1), MENU_BACKGROUNDS[1]);
}
test_apply_swaps_the_class_on_the_body() {
const body = fakeBody();
applyMenuBackground(MENU_BACKGROUNDS[1], body);
this.assertTrue(body.classList.contains(MENU_BACKGROUNDS[1].class));
this.assertFalse(body.classList.contains(MENU_BACKGROUNDS[0].class));
applyMenuBackground(MENU_BACKGROUNDS[0], body);
this.assertTrue(body.classList.contains(MENU_BACKGROUNDS[0].class));
this.assertFalse(body.classList.contains(MENU_BACKGROUNDS[1].class));
}
async test_app_launch_picks_a_background() {
const env = await setupDom();
try {
await import(`../client/js/app.js?background=${Date.now()}`);
const classes = env.window.document.body.classList;
this.assert(
classes.contains("menu-bg-0") || classes.contains("menu-bg-1"),
"a background class is applied at launch"
);
} finally {
teardownDom(env);
}
}
}