Add unit tests for storage, settings and achievements
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 78/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- typescript
- Bereich
- testing
Rechercherichtung
Start with shared/storage.ts, shared/settings.ts, and shared/achievements.ts at the listed lines, then check the project’s package scripts and CI setup to find how tests should run. Add a Node test environment with an in-memory localStorage stub and cover the listed cases, including the reset behavior. Done when the tests pass in CI and the issue’s acceptance cases are covered.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
The three modules that hold all persisted player data (high scores, settings, trophies, stats) are Phaser-free and have no tests.
Where
shared/storage.ts:4-30shared/settings.ts:55-78shared/achievements.ts:91,shared/achievements.ts:100-167
Suggested fix
Use a node environment with an in-memory localStorage stub and vi.resetModules() plus a dynamic import per test, because settings and achievements read storage at import.
Storage
-
loadJSONreturns the fallback when nothing is stored, when storage is unavailable or throws, and on invalid JSON -
saveJSONwrites under thegh-arcade:prefix and swallows a throwingsetItem -
submitHighScore: 10 is a record, 10 again is not, 9 is not, 11 is; 0 on a fresh game is not
Settings
- Defaults;
reducedMotionfollowsmatchMedia - A stored partial merges over defaults
-
updateSettingspersists, notifies each listener once and returns the new object; unsubscribe works -
resetSettingsrestores defaults and notifies
Achievements
-
unlockof an unknown id returns false; a known id returns true once - The tenth unlock grants the collection trophy; the collection trophy itself is not counted
-
addCounterunlocks exactly at the target -
recordPlayaccumulates plays, best and total score - The "play every game" trophy unlocks only after every game has a play
-
drainRecentUnlocksreturns new trophies once - After
resetTrophies, nothing is unlocked anddrainRecentUnlocks()is empty (fails today)
Acceptance criteria
- The cases above pass in CI
Getting started
- Relevant files:
shared/storage.ts,shared/settings.ts,shared/achievements.ts - Run locally:
npm install, thennpm run dev - Checks:
npm run typecheckandnpm run build(there is no test suite yet) - Related docs:
README.md
Filed by repo-audit/full-audit at b001f5d. Severity: medium. Effort: M. audit-key: testing|shared/achievements.ts|unlock
- Vorherrschende Sprache
- TypeScript
- Sterne
- 3
- Forks
- 3
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus TMHSDigital/GH-Arcade
-
enhancement good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
TMHSDigital/GH-Arcade#50 ·
-
enhancement good first issue severity: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
TMHSDigital/GH-Arcade#47 ·
-
documentation good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
TMHSDigital/GH-Arcade#34 ·
-
documentation good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
TMHSDigital/GH-Arcade#33 ·
-
dependencies good first issue severity: low
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 85/100
TMHSDigital/GH-Arcade#27 ·
Alle Issues in TMHSDigital/GH-Arcade
Ähnliche Issues
-
automated-triage type/bug type/ci
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
📦 expo-router Android contributor: external needs review sdk-58 severity: medium
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
expo/expo#53436 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Translate the READMEOffendocumentation good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
asasemahmed/openboard#68 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
-
Document PowerShell shell semantics and read-only Bash deduplication in Built-in Tools referenceOffendocumentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100