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

65 lines
2.1 KiB
JavaScript

import { TestCase } from "./framework/test_case.js";
import { setupDom, teardownDom, FakeAudio } from "./framework/dom.js";
import { CREDIT_SECTIONS } from "../client/js/credits.js";
import { audio } from "../client/js/audio.js";
export class CreditsTest extends TestCase {
test_credits_name_the_required_sources() {
const text = JSON.stringify(CREDIT_SECTIONS);
for (const needle of [
"game-icons.net",
"opengameart.org",
"Ted Kerr",
"Delapouite",
"Lorc",
"Mapbox Maki",
]) {
this.assertTrue(text.includes(needle), `credits mention ${needle}`);
}
}
async test_menu_button_opens_the_credits_and_clicks_sound() {
const env = await setupDom();
try {
FakeAudio.reset();
await import(`../client/js/app.js?credits=${Date.now()}`);
audio.setEnabled(true);
this.assertTrue(env.$("#modal-credits").hasClass("hidden"));
env.$("#menu-credits").click();
this.assertFalse(env.$("#modal-credits").hasClass("hidden"));
this.assertGreaterOrEqual(env.$("#credits-list .credits-title").length, 3);
this.assertTrue(
FakeAudio.playedSources.includes("assets/sounds/button_click.mp3"),
"a button click plays the click effect"
);
env.$("#modal-credits .modal-close").click();
this.assertTrue(env.$("#modal-credits").hasClass("hidden"));
} finally {
teardownDom(env);
}
}
async test_audio_toggle_relabels_both_buttons() {
const env = await setupDom();
try {
await import(`../client/js/app.js?audio=${Date.now()}`);
audio.setEnabled(true);
this.assertEqual(env.$("#menu-audio").text(), "Sound: On");
this.assertEqual(env.$("#audio-button").text(), "Sound on");
env.$("#menu-audio").click();
this.assertFalse(audio.enabled);
this.assertEqual(env.$("#menu-audio").text(), "Sound: Off");
env.$("#audio-button").click();
this.assertTrue(audio.enabled);
this.assertEqual(env.$("#menu-audio").text(), "Sound: On");
} finally {
audio.setEnabled(true);
teardownDom(env);
}
}
}