fingerprintjs
36 строк · 1.3 Кб
1import { withMockProperties } from '../../tests/utils'
2import getDeviceMemory from './device_memory'
3
4describe('Sources', () => {
5describe('deviceMemory', () => {
6it('returns number or undefined for the current browser', () => {
7const deviceMemory = getDeviceMemory()
8expect(['number', 'undefined'].indexOf(typeof deviceMemory)).not.toBe(-1)
9if (typeof deviceMemory === 'number') {
10expect(deviceMemory).not.toBeNaN()
11expect(deviceMemory).toBeGreaterThan(0)
12}
13})
14
15it('handles numeric values', async () => {
16// Configuring the mock property as `{ value: 8 }` doesn't work in old browsers.
17await withMockProperties(navigator, { deviceMemory: { get: () => 8 } }, () => {
18expect(getDeviceMemory()).toBe(8)
19})
20})
21
22it('handles undefined values', async () => {
23await withMockProperties(navigator, { deviceMemory: { get: () => undefined } }, () => {
24expect(getDeviceMemory()).toBeUndefined()
25})
26})
27
28// Some browsers return a string value for `deviceMemory`.
29// This test checks that it's fetched as a number regardless.
30it('converts fake string value to number', async () => {
31await withMockProperties(navigator, { deviceMemory: { get: () => '4' } }, () => {
32expect(getDeviceMemory()).toBe(4)
33})
34})
35})
36})
37