65 lines
2.1 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
}
|