Skip to content

Commit 59a3957

Browse files
committed
Add a test for disabled localStorage
1 parent 1260be5 commit 59a3957

File tree

1 file changed

+45
-7
lines changed

1 file changed

+45
-7
lines changed

packages/theme-ui/test/color-modes.js

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ test('renders with color modes', () => {
3737
modes: {
3838
dark: {
3939
text: 'white',
40-
}
41-
}
42-
}
40+
},
41+
},
42+
},
4343
}}>
4444
<Mode />
4545
</ThemeProvider>
@@ -64,8 +64,8 @@ test('renders with initial color mode name', () => {
6464
colors: {
6565
modes: {
6666
dark: {},
67-
}
68-
}
67+
},
68+
},
6969
}}>
7070
<Mode />
7171
</ThemeProvider>
@@ -212,8 +212,8 @@ test('inherits color mode state from parent context', () => {
212212
colors: {
213213
modes: {
214214
dark: {},
215-
}
216-
}
215+
},
216+
},
217217
}}>
218218
<ThemeProvider
219219
theme={{
@@ -518,3 +518,41 @@ test('raw color values are passed to theme-ui context when custom properties are
518518
)
519519
expect(color).toBe('tomato')
520520
})
521+
522+
test('warns when localStorage is disabled', () => {
523+
const originalWindow = window
524+
525+
const mockWindow = new Proxy(window, {
526+
get: (obj, prop) => {
527+
if (prop === 'localStorage') {
528+
throw 'SecurityError: The operation is insecure.'
529+
} else {
530+
return obj[prop]
531+
}
532+
},
533+
})
534+
535+
Object.defineProperty(global, 'window', {
536+
value: mockWindow,
537+
writable: true,
538+
})
539+
540+
let mode
541+
const Consumer = props => {
542+
const [colorMode] = useColorMode()
543+
mode = colorMode
544+
return false
545+
}
546+
547+
render(
548+
<ThemeProvider>
549+
<Consumer />
550+
</ThemeProvider>
551+
)
552+
expect(mode).toBe('default')
553+
554+
Object.defineProperty(global, 'window', {
555+
value: originalWindow,
556+
writable: true,
557+
})
558+
})

0 commit comments

Comments
 (0)