add tests for splash_messages
This commit is contained in:
parent
a0ec2cc71c
commit
14099a5bd5
|
@ -0,0 +1,66 @@
|
||||||
|
import { getSplashMessages } from "#app/data/splash-messages";
|
||||||
|
import { afterEach } from "node:test";
|
||||||
|
import { describe, expect, it, vi } from "vitest";
|
||||||
|
|
||||||
|
const Jan = 1;
|
||||||
|
const Sep = 8;
|
||||||
|
const Oct = 9;
|
||||||
|
const Dec = 11;
|
||||||
|
|
||||||
|
describe("Data - Splash Messages", () => {
|
||||||
|
it("should contain at least 15 splash messages", () => {
|
||||||
|
expect(getSplashMessages().length).toBeGreaterThanOrEqual(15);
|
||||||
|
});
|
||||||
|
|
||||||
|
// make sure to adjust this test if the weight it changed!
|
||||||
|
it("should add contain 10 `battlesWon` splash messages", () => {
|
||||||
|
const battlesWonMessages = getSplashMessages().filter((message) => message === "splashMessages:battlesWon");
|
||||||
|
expect(battlesWonMessages).toHaveLength(10);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Seasonal", () => {
|
||||||
|
afterEach(() => {
|
||||||
|
vi.useRealTimers(); // reset system time
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should contain halloween messages from Sep 15 to Oct 31", () => {
|
||||||
|
testSeason(new Date(2023, Sep, 15), new Date(2023, Oct, 31), "halloween");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should contain xmas messages from Dec 1 to Dec 26", () => {
|
||||||
|
testSeason(new Date(2023, Dec, 1), new Date(2023, Dec, 26), "xmas");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should contain new years messages frm Jan 1 to Jan 31", () => {
|
||||||
|
testSeason(new Date(2024, Jan, 1), new Date(2024, Jan, 31), "newYears");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helpoer method to test seasonal messages
|
||||||
|
* @param startDate The seasons start date
|
||||||
|
* @param endDate The seasons end date
|
||||||
|
* @param prefix the splash message prefix (e.g. `newYears` or `xmas`)
|
||||||
|
*/
|
||||||
|
function testSeason(startDate: Date, endDate: Date, prefix: string) {
|
||||||
|
const filterFn = (message: string) => message.startsWith(`splashMessages:${prefix}.`);
|
||||||
|
|
||||||
|
const beforeDate = new Date(startDate);
|
||||||
|
beforeDate.setDate(startDate.getDate() - 1);
|
||||||
|
|
||||||
|
const afterDate = new Date(endDate);
|
||||||
|
afterDate.setDate(endDate.getDate() + 1);
|
||||||
|
|
||||||
|
const dates: Date[] = [beforeDate, startDate, endDate, afterDate];
|
||||||
|
const [before, start, end, after] = dates.map((date) => {
|
||||||
|
vi.setSystemTime(date);
|
||||||
|
console.log("System time set to", date);
|
||||||
|
return getSplashMessages().filter(filterFn).length;
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(before).toBe(0);
|
||||||
|
expect(start).toBeGreaterThan(0);
|
||||||
|
expect(end).toBeGreaterThan(0);
|
||||||
|
expect(after).toBe(0);
|
||||||
|
}
|
Loading…
Reference in New Issue