Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions src/daily/__tests__/schedule.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ test("an undefined day resolves to null", () => {
});

test("getPuzzleForDate falls back to the default fixed deck", () => {
// the checked-in schedule starts empty, so any date gets the default
expect(Object.keys(DAILY_PUZZLE_SCHEDULE).length).toEqual(0);
expect(getPuzzleForDate("2026-07-28")).toBe(DEFAULT_DAILY_PUZZLE);
});

Expand All @@ -64,3 +62,15 @@ test("the default puzzle builds the fixed 27-card deck", () => {
expect(deck.features.length).toEqual(3);
expect(Object.keys(deck.cards).length).toEqual(27);
});

test("National Egg Day is scheduled for June 3rd and recurs annually", () => {
expect(getPuzzleForDate("2026-06-03").name).toEqual("National Egg Day");
expect(getPuzzleForDate("2027-06-03").name).toEqual("National Egg Day");
expect(getPuzzleForDate("2025-06-03").name).not.toEqual("National Egg Day");
});

test("National Egg Day builds a 27-card deck of Fried Egg cards", () => {
const deck = DAILY_PUZZLE_SCHEDULE["2026-06-03"].createDeck();
expect(deck.features.length).toEqual(3);
expect(Object.keys(deck.cards).length).toEqual(27);
});
17 changes: 16 additions & 1 deletion src/daily/schedule.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { Deck } from "deckBuilder/types";
import GeometricDeckGenerator from "deckBuilder/GeometricDeckGenerator";
import { createDailyDeck } from "./deck";

export interface DailyPuzzleDefinition {
Expand Down Expand Up @@ -57,7 +58,21 @@ export interface DailyPuzzleSchedule {
* ),
* },
*/
export const DAILY_PUZZLE_SCHEDULE: DailyPuzzleSchedule = {};
export const DAILY_PUZZLE_SCHEDULE: DailyPuzzleSchedule = {
"2026-06-03": {
name: "National Egg Day",
createDeck: () =>
new GeometricDeckGenerator(
{
numbers: [1, 2, 3],
yolks: [1, 2, 3],
colors: ["Yellow", "Orange", "Red"],
},
{ shapes: "Fried Egg" },
{ idPrefix: "daily-egg" }
),
},
};

/** The deck used whenever no scheduled puzzle matches the date. */
export const DEFAULT_DAILY_PUZZLE: DailyPuzzleDefinition = {
Expand Down
Loading