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
2 changes: 1 addition & 1 deletion fission/src/systems/preferences/PreferenceTypes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export function defaultUserPreferences(): UserPreferences {
RenderProtectedZones: true,
InputSchemes: [],
RenderSceneTags: true,
RenderScoreboard: true,
RenderScoreboard: false,
SubsystemGravity: false,
TouchControls: false,
SimAutoReconnect: false,
Expand Down
27 changes: 17 additions & 10 deletions fission/src/test/PreferencesSystem.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -20,27 +33,23 @@ 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)

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", () => {
PreferencesSystem.setUserPreference("ZoomSensitivity", undefined as unknown as number)
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", () => {
Expand All @@ -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", () => {
Expand Down
82 changes: 82 additions & 0 deletions fission/src/test/__snapshots__/PreferencesSystem.test.ts.snap

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading