55import { afterEach , beforeEach , describe , expect , test , vi } from "vitest" ;
66import {
77 _resetPreferences ,
8- clearSavedDefaultMods ,
8+ clearSavedMods ,
99 initializePreferences ,
10+ MODS_STORAGE_KEY ,
1011 preferences ,
11- setDefaultMods ,
12- setPreferredTileset ,
12+ setMods ,
13+ setTileset ,
14+ TILESET_STORAGE_KEY ,
1315} from "./preferences.svelte" ;
1416
15- const STORAGE_KEY = "cbn-guide:tileset" ;
16- const DEFAULT_MODS_STORAGE_KEY = "cbn-guide:default-mods" ;
1717const DEFAULT_TILESET = "undead_people" ;
1818
1919function installMockStorage ( ) {
@@ -44,46 +44,46 @@ function installMockStorage() {
4444describe ( "preferences" , ( ) => {
4545 beforeEach ( ( ) => {
4646 installMockStorage ( ) ;
47- localStorage . removeItem ?.( STORAGE_KEY ) ;
47+ localStorage . removeItem ?.( TILESET_STORAGE_KEY ) ;
4848 _resetPreferences ( ) ;
4949 } ) ;
5050
5151 afterEach ( ( ) => {
5252 vi . restoreAllMocks ( ) ;
53- localStorage . removeItem ?.( STORAGE_KEY ) ;
53+ localStorage . removeItem ?.( TILESET_STORAGE_KEY ) ;
5454 _resetPreferences ( ) ;
5555 } ) ;
5656
5757 test ( "loads the persisted tileset preference when the route omits it" , ( ) => {
58- localStorage . setItem ( STORAGE_KEY , "retrodays" ) ;
58+ localStorage . setItem ( TILESET_STORAGE_KEY , "retrodays" ) ;
5959
6060 expect ( initializePreferences ( ) ) . toEqual ( {
61- preferredTileset : "retrodays" ,
62- defaultMods : null ,
61+ tileset : "retrodays" ,
62+ mods : [ ] ,
6363 } ) ;
6464 expect ( preferences ) . toEqual ( {
65- preferredTileset : "retrodays" ,
66- defaultMods : null ,
65+ tileset : "retrodays" ,
66+ mods : [ ] ,
6767 } ) ;
6868 } ) ;
6969
7070 test ( "falls back to the default tileset when storage contains an invalid value" , ( ) => {
71- localStorage . setItem ( STORAGE_KEY , "not-a-real-tileset" ) ;
71+ localStorage . setItem ( TILESET_STORAGE_KEY , "not-a-real-tileset" ) ;
7272
7373 expect ( initializePreferences ( ) ) . toEqual ( {
74- preferredTileset : DEFAULT_TILESET ,
75- defaultMods : null ,
74+ tileset : DEFAULT_TILESET ,
75+ mods : [ ] ,
7676 } ) ;
77- expect ( localStorage . getItem ( STORAGE_KEY ) ) . toBe ( DEFAULT_TILESET ) ;
77+ expect ( localStorage . getItem ( TILESET_STORAGE_KEY ) ) . toBe ( DEFAULT_TILESET ) ;
7878 } ) ;
7979
8080 test ( "setPreferredTileset rejects invalid values without mutating the preference" , ( ) => {
81- expect ( setPreferredTileset ( "bad-input" ) ) . toBe ( false ) ;
81+ expect ( setTileset ( "bad-input" ) ) . toBe ( false ) ;
8282 expect ( preferences ) . toEqual ( {
83- preferredTileset : DEFAULT_TILESET ,
84- defaultMods : null ,
83+ tileset : DEFAULT_TILESET ,
84+ mods : [ ] ,
8585 } ) ;
86- expect ( localStorage . getItem ( STORAGE_KEY ) ) . toBeNull ( ) ;
86+ expect ( localStorage . getItem ( TILESET_STORAGE_KEY ) ) . toBeNull ( ) ;
8787 } ) ;
8888
8989 test ( "swallows storage failures during initialization and writes" , ( ) => {
@@ -95,95 +95,86 @@ describe("preferences", () => {
9595 } ) ;
9696
9797 expect ( initializePreferences ( ) ) . toEqual ( {
98- preferredTileset : DEFAULT_TILESET ,
99- defaultMods : null ,
98+ tileset : DEFAULT_TILESET ,
99+ mods : [ ] ,
100100 } ) ;
101101
102- expect ( ( ) => setPreferredTileset ( "retrodays" ) ) . not . toThrow ( ) ;
102+ expect ( ( ) => setTileset ( "retrodays" ) ) . not . toThrow ( ) ;
103103 expect ( preferences ) . toEqual ( {
104- preferredTileset : "retrodays" ,
105- defaultMods : null ,
104+ tileset : "retrodays" ,
105+ mods : [ ] ,
106106 } ) ;
107107 } ) ;
108108} ) ;
109109
110- describe ( "defaultMods " , ( ) => {
110+ describe ( "mods " , ( ) => {
111111 beforeEach ( ( ) => {
112112 installMockStorage ( ) ;
113- localStorage . removeItem ?.( DEFAULT_MODS_STORAGE_KEY ) ;
113+ localStorage . removeItem ?.( MODS_STORAGE_KEY ) ;
114114 _resetPreferences ( ) ;
115115 } ) ;
116116
117117 afterEach ( ( ) => {
118118 vi . restoreAllMocks ( ) ;
119- localStorage . removeItem ?.( DEFAULT_MODS_STORAGE_KEY ) ;
119+ localStorage . removeItem ?.( MODS_STORAGE_KEY ) ;
120120 _resetPreferences ( ) ;
121121 } ) ;
122122
123123 test ( "loads saved modset from localStorage" , ( ) => {
124124 localStorage . setItem (
125- DEFAULT_MODS_STORAGE_KEY ,
125+ MODS_STORAGE_KEY ,
126126 JSON . stringify ( [ "aftershock" , "magiclysm" ] ) ,
127127 ) ;
128128
129- expect ( initializePreferences ( ) . defaultMods ) . toEqual ( [
130- "aftershock" ,
131- "magiclysm" ,
132- ] ) ;
133- expect ( preferences . defaultMods ) . toEqual ( [ "aftershock" , "magiclysm" ] ) ;
129+ expect ( initializePreferences ( ) . mods ) . toEqual ( [ "aftershock" , "magiclysm" ] ) ;
130+ expect ( preferences . mods ) . toEqual ( [ "aftershock" , "magiclysm" ] ) ;
134131 } ) ;
135132
136133 test ( "returns null when no key exists" , ( ) => {
137- expect ( initializePreferences ( ) . defaultMods ) . toBeNull ( ) ;
138- expect ( preferences . defaultMods ) . toBeNull ( ) ;
134+ expect ( initializePreferences ( ) . mods ) . toEqual ( [ ] ) ;
135+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
139136 } ) ;
140137
141138 test ( "discards malformed JSON gracefully" , ( ) => {
142- localStorage . setItem ( DEFAULT_MODS_STORAGE_KEY , "{ bad json }" ) ;
139+ localStorage . setItem ( MODS_STORAGE_KEY , "{ bad json }" ) ;
143140
144- expect ( initializePreferences ( ) . defaultMods ) . toBeNull ( ) ;
145- expect ( preferences . defaultMods ) . toBeNull ( ) ;
141+ expect ( initializePreferences ( ) . mods ) . toEqual ( [ ] ) ;
142+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
146143 } ) ;
147144
148145 test ( "discards non-array JSON gracefully" , ( ) => {
149146 localStorage . setItem (
150- DEFAULT_MODS_STORAGE_KEY ,
147+ MODS_STORAGE_KEY ,
151148 JSON . stringify ( { mods : [ "aftershock" ] } ) ,
152149 ) ;
153150
154- expect ( initializePreferences ( ) . defaultMods ) . toBeNull ( ) ;
155- expect ( preferences . defaultMods ) . toBeNull ( ) ;
151+ expect ( initializePreferences ( ) . mods ) . toEqual ( [ ] ) ;
152+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
156153 } ) ;
157154
158155 test ( "setDefaultMods persists and updates state" , ( ) => {
159- setDefaultMods ( [ "aftershock" ] ) ;
156+ setMods ( [ "aftershock" ] ) ;
160157
161- expect ( preferences . defaultMods ) . toEqual ( [ "aftershock" ] ) ;
162- expect ( localStorage . getItem ( DEFAULT_MODS_STORAGE_KEY ) ) . toBe (
158+ expect ( preferences . mods ) . toEqual ( [ "aftershock" ] ) ;
159+ expect ( localStorage . getItem ( MODS_STORAGE_KEY ) ) . toBe (
163160 JSON . stringify ( [ "aftershock" ] ) ,
164161 ) ;
165162 } ) ;
166163
167164 test ( "setDefaultMods([]) clears the preset" , ( ) => {
168- localStorage . setItem (
169- DEFAULT_MODS_STORAGE_KEY ,
170- JSON . stringify ( [ "aftershock" ] ) ,
171- ) ;
172- setDefaultMods ( [ ] ) ;
165+ localStorage . setItem ( MODS_STORAGE_KEY , JSON . stringify ( [ "aftershock" ] ) ) ;
166+ setMods ( [ ] ) ;
173167
174- expect ( preferences . defaultMods ) . toBeNull ( ) ;
175- expect ( localStorage . getItem ( DEFAULT_MODS_STORAGE_KEY ) ) . toBeNull ( ) ;
168+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
169+ expect ( localStorage . getItem ( MODS_STORAGE_KEY ) ) . toBeNull ( ) ;
176170 } ) ;
177171
178172 test ( "clearSavedDefaultMods removes key and state" , ( ) => {
179- localStorage . setItem (
180- DEFAULT_MODS_STORAGE_KEY ,
181- JSON . stringify ( [ "aftershock" ] ) ,
182- ) ;
183- clearSavedDefaultMods ( ) ;
173+ localStorage . setItem ( MODS_STORAGE_KEY , JSON . stringify ( [ "aftershock" ] ) ) ;
174+ clearSavedMods ( ) ;
184175
185- expect ( preferences . defaultMods ) . toBeNull ( ) ;
186- expect ( localStorage . getItem ( DEFAULT_MODS_STORAGE_KEY ) ) . toBeNull ( ) ;
176+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
177+ expect ( localStorage . getItem ( MODS_STORAGE_KEY ) ) . toBeNull ( ) ;
187178 } ) ;
188179
189180 test ( "swallows storage failures silently" , ( ) => {
@@ -197,12 +188,12 @@ describe("defaultMods", () => {
197188 throw new Error ( "storage denied" ) ;
198189 } ) ;
199190
200- expect ( initializePreferences ( ) . defaultMods ) . toBeNull ( ) ;
191+ expect ( initializePreferences ( ) . mods ) . toEqual ( [ ] ) ;
201192
202- expect ( ( ) => setDefaultMods ( [ "aftershock" ] ) ) . not . toThrow ( ) ;
203- expect ( preferences . defaultMods ) . toEqual ( [ "aftershock" ] ) ;
193+ expect ( ( ) => setMods ( [ "aftershock" ] ) ) . not . toThrow ( ) ;
194+ expect ( preferences . mods ) . toEqual ( [ "aftershock" ] ) ;
204195
205- expect ( ( ) => clearSavedDefaultMods ( ) ) . not . toThrow ( ) ;
206- expect ( preferences . defaultMods ) . toBeNull ( ) ;
196+ expect ( ( ) => clearSavedMods ( ) ) . not . toThrow ( ) ;
197+ expect ( preferences . mods ) . toEqual ( [ ] ) ;
207198 } ) ;
208199} ) ;
0 commit comments