mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-14 10:35:11 +00:00
utils/os: add Linux and iOS
Also update to navigator.userAgentData to avoid warnings from chromium.
This commit is contained in:
+55
-8
@@ -1,7 +1,28 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021 The Pybricks Authors
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
|
||||
import { isAndroid, isMacOS, isWindows } from './os';
|
||||
import { isAndroid, isIOS, isLinux, isMacOS, isWindows } from './os';
|
||||
import { defined } from '.';
|
||||
|
||||
class TestUserAgentData implements NavigatorUAData {
|
||||
getHighEntropyValues(_hints: string[]): Promise<UADataValues> {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
toJSON(): UALowEntropyJSON {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
get brands(): NavigatorUABrandVersion[] {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
get mobile(): boolean {
|
||||
throw new Error('Method not implemented.');
|
||||
}
|
||||
get platform(): string {
|
||||
return 'test-agent';
|
||||
}
|
||||
}
|
||||
|
||||
Object.defineProperty(navigator, 'userAgentData', { value: new TestUserAgentData() });
|
||||
|
||||
afterEach(() => {
|
||||
jest.resetAllMocks();
|
||||
@@ -9,33 +30,59 @@ afterEach(() => {
|
||||
|
||||
describe('isAndroid', () => {
|
||||
test('is true', () => {
|
||||
jest.spyOn(navigator, 'userAgent', 'get').mockReturnValue('Android');
|
||||
defined(navigator.userAgentData);
|
||||
jest.spyOn(navigator.userAgentData, 'platform', 'get').mockReturnValue(
|
||||
'Android',
|
||||
);
|
||||
expect(isAndroid()).toBeTruthy();
|
||||
});
|
||||
test('is false', () => {
|
||||
jest.spyOn(navigator, 'userAgent', 'get').mockReturnValue('Linux');
|
||||
expect(isAndroid()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isMacOS', () => {
|
||||
test('is true', () => {
|
||||
jest.spyOn(navigator, 'platform', 'get').mockReturnValue('MacIntel');
|
||||
defined(navigator.userAgentData);
|
||||
jest.spyOn(navigator.userAgentData, 'platform', 'get').mockReturnValue('macOS');
|
||||
expect(isMacOS()).toBeTruthy();
|
||||
});
|
||||
test('is false', () => {
|
||||
jest.spyOn(navigator, 'platform', 'get').mockReturnValue('Win32');
|
||||
expect(isMacOS()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isWindows', () => {
|
||||
test('is true', () => {
|
||||
jest.spyOn(navigator, 'platform', 'get').mockReturnValue('Win32');
|
||||
defined(navigator.userAgentData);
|
||||
jest.spyOn(navigator.userAgentData, 'platform', 'get').mockReturnValue(
|
||||
'Windows',
|
||||
);
|
||||
expect(isWindows()).toBeTruthy();
|
||||
});
|
||||
test('is false', () => {
|
||||
jest.spyOn(navigator, 'platform', 'get').mockReturnValue('MacIntel');
|
||||
expect(isWindows()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isLinux', () => {
|
||||
test('is true', () => {
|
||||
defined(navigator.userAgentData);
|
||||
jest.spyOn(navigator.userAgentData, 'platform', 'get').mockReturnValue('Linux');
|
||||
expect(isLinux()).toBeTruthy();
|
||||
});
|
||||
test('is false', () => {
|
||||
expect(isLinux()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
describe('isIOS', () => {
|
||||
test('is true', () => {
|
||||
defined(navigator.userAgentData);
|
||||
jest.spyOn(navigator.userAgentData, 'platform', 'get').mockReturnValue('iOS');
|
||||
expect(isIOS()).toBeTruthy();
|
||||
});
|
||||
test('is false', () => {
|
||||
expect(isIOS()).toBeFalsy();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user