diff --git a/fission/src/systems/preferences/PreferenceTypes.ts b/fission/src/systems/preferences/PreferenceTypes.ts index a506c84ef4..9be918f55e 100644 --- a/fission/src/systems/preferences/PreferenceTypes.ts +++ b/fission/src/systems/preferences/PreferenceTypes.ts @@ -63,7 +63,7 @@ export function defaultUserPreferences(): UserPreferences { RenderProtectedZones: true, InputSchemes: [], RenderSceneTags: true, - RenderScoreboard: true, + RenderScoreboard: false, SubsystemGravity: false, TouchControls: false, SimAutoReconnect: false, diff --git a/fission/src/test/PreferencesSystem.test.ts b/fission/src/test/PreferencesSystem.test.ts index 7f2b99804d..8437adcbdb 100644 --- a/fission/src/test/PreferencesSystem.test.ts +++ b/fission/src/test/PreferencesSystem.test.ts @@ -4,11 +4,24 @@ import { MatchModeType } from "@/systems/match_mode/MatchModeTypes" import PreferencesSystem from "@/systems/preferences/PreferencesSystem" import { defaultFieldPreferences, + defaultUserPreferences, type FieldPreferences, type GraphicsPreferences, type RobotPreferences, + type UserPreference, + type UserPreferences, } from "@/systems/preferences/PreferenceTypes" +/** + * Captures the full current user-preferences state by resolving every key + * defined by defaultUserPreferences() through the public getter, so the whole + * set can be asserted with toMatchSnapshot(). + */ +function captureUserPreferences(): UserPreferences { + const keys = Object.keys(defaultUserPreferences()) as UserPreference[] + return Object.fromEntries(keys.map(key => [key, PreferencesSystem.getUserPreference(key)])) as UserPreferences +} + describe("Preferences System Global Values", () => { test("Setting values", () => { PreferencesSystem.setUserPreference("ZoomSensitivity", 7) @@ -20,7 +33,7 @@ describe("Preferences System Global Values", () => { expect(PreferencesSystem.getUserPreference("RenderScoreboard")).toBe(false) }) - test("Setting without saving", async () => { + test("Setting without saving", () => { PreferencesSystem.setUserPreference("ZoomSensitivity", 13) PreferencesSystem.setUserPreference("RenderSceneTags", false) PreferencesSystem.setUserPreference("RenderScoreboard", true) @@ -28,9 +41,7 @@ describe("Preferences System Global Values", () => { window.localStorage.setItem("Preferences", "{}") // Clears local storage PreferencesSystem.loadPreferences() - expect(PreferencesSystem.getUserPreference("ZoomSensitivity")).toBe(15) - expect(PreferencesSystem.getUserPreference("RenderSceneTags")).toBe(true) - expect(PreferencesSystem.getUserPreference("RenderScoreboard")).toBe(true) + expect(captureUserPreferences()).toMatchSnapshot("default user preferences") }) test("Reset to default if undefined", () => { @@ -38,9 +49,7 @@ describe("Preferences System Global Values", () => { PreferencesSystem.setUserPreference("RenderSceneTags", undefined as unknown as boolean) PreferencesSystem.setUserPreference("RenderScoreboard", undefined as unknown as boolean) - expect(PreferencesSystem.getUserPreference("ZoomSensitivity")).toBe(15) - expect(PreferencesSystem.getUserPreference("RenderSceneTags")).toBe(true) - expect(PreferencesSystem.getUserPreference("RenderScoreboard")).toBe(true) + expect(captureUserPreferences()).toMatchSnapshot("default user preferences") }) test("Setting then saving", () => { @@ -66,9 +75,7 @@ describe("Preferences System Global Values", () => { PreferencesSystem.clearPreferences() - expect(PreferencesSystem.getUserPreference("ZoomSensitivity")).toBe(15) - expect(PreferencesSystem.getUserPreference("RenderSceneTags")).toBe(true) - expect(PreferencesSystem.getUserPreference("RenderScoreboard")).toBe(true) + expect(captureUserPreferences()).toMatchSnapshot("default user preferences") }) test("Graphics preferences", () => { diff --git a/fission/src/test/__snapshots__/PreferencesSystem.test.ts.snap b/fission/src/test/__snapshots__/PreferencesSystem.test.ts.snap new file mode 100644 index 0000000000..34e8db9d60 --- /dev/null +++ b/fission/src/test/__snapshots__/PreferencesSystem.test.ts.snap @@ -0,0 +1,82 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Preferences System Global Values > Clearing preferences > default user preferences 1`] = ` +{ + "InputSchemes": [], + "MultiplayerClientID": "", + "MultiplayerUsername": "", + "MuteAllSound": false, + "PitchSensitivity": 10, + "RenderProtectedZones": true, + "RenderSceneTags": true, + "RenderScoreboard": false, + "RenderScoringZones": true, + "ReportAnalytics": false, + "SFXVolume": 25, + "ScenePanSensitivity": 1, + "SceneRotationSensitivity": 0.5, + "ShowCenterOfMassIndicators": false, + "ShowViewCube": true, + "SimAutoReconnect": false, + "SubsystemGravity": false, + "TouchControls": false, + "UseMetric": false, + "ViewCubeRotationSensitivity": 0.025, + "YawSensitivity": 3, + "ZoomSensitivity": 15, +} +`; + +exports[`Preferences System Global Values > Reset to default if undefined > default user preferences 1`] = ` +{ + "InputSchemes": [], + "MultiplayerClientID": "", + "MultiplayerUsername": "", + "MuteAllSound": false, + "PitchSensitivity": 10, + "RenderProtectedZones": true, + "RenderSceneTags": true, + "RenderScoreboard": false, + "RenderScoringZones": true, + "ReportAnalytics": false, + "SFXVolume": 25, + "ScenePanSensitivity": 1, + "SceneRotationSensitivity": 0.5, + "ShowCenterOfMassIndicators": false, + "ShowViewCube": true, + "SimAutoReconnect": false, + "SubsystemGravity": false, + "TouchControls": false, + "UseMetric": false, + "ViewCubeRotationSensitivity": 0.025, + "YawSensitivity": 3, + "ZoomSensitivity": 15, +} +`; + +exports[`Preferences System Global Values > Setting without saving > default user preferences 1`] = ` +{ + "InputSchemes": [], + "MultiplayerClientID": "", + "MultiplayerUsername": "", + "MuteAllSound": false, + "PitchSensitivity": 10, + "RenderProtectedZones": true, + "RenderSceneTags": true, + "RenderScoreboard": false, + "RenderScoringZones": true, + "ReportAnalytics": false, + "SFXVolume": 25, + "ScenePanSensitivity": 1, + "SceneRotationSensitivity": 0.5, + "ShowCenterOfMassIndicators": false, + "ShowViewCube": true, + "SimAutoReconnect": false, + "SubsystemGravity": false, + "TouchControls": false, + "UseMetric": false, + "ViewCubeRotationSensitivity": 0.025, + "YawSensitivity": 3, + "ZoomSensitivity": 15, +} +`;