From 106d882fba0849f810416deaf3043f8ffefc0824 Mon Sep 17 00:00:00 2001 From: Faisal Salman Date: Fri, 10 Nov 2023 10:10:38 +0700 Subject: [PATCH] Create test for helpers --- src/helpers/ua-parser-helpers.js | 4 +--- test/dts-test.ts | 8 +++++++- test/mocha-test-helpers.js | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 test/mocha-test-helpers.js diff --git a/src/helpers/ua-parser-helpers.js b/src/helpers/ua-parser-helpers.js index 302a9e9..e11a421 100644 --- a/src/helpers/ua-parser-helpers.js +++ b/src/helpers/ua-parser-helpers.js @@ -16,6 +16,4 @@ const isChromiumBased = (res) => res.engine.is(Engine.BLINK); module.exports = { isAppleSilicon, isChromiumBased -} - -// TODO: create test \ No newline at end of file +} \ No newline at end of file diff --git a/test/dts-test.ts b/test/dts-test.ts index c060e46..6ede700 100644 --- a/test/dts-test.ts +++ b/test/dts-test.ts @@ -1,5 +1,6 @@ import { expectType } from 'tsd'; import { UAParser, IResult, IBrowser, ICPU, IEngine, IDevice, IOS } from "../src/main/ua-parser"; +import { isAppleSilicon, isChromiumBased } from "../src/helpers/ua-parser-helpers"; const uastring = 'Mozilla/5.0 (X11; MyCustomOS; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'; const extensions = { @@ -39,4 +40,9 @@ expectType(parser.getEngine()); expectType(parser.getOS()); expectType(parser.getResult()); expectType(parser.getUA()); -expectType(parser.setUA(uastring)); \ No newline at end of file +expectType(parser.setUA(uastring)); + +const result = parser.getResult(); + +expectType(isAppleSilicon(result)); +expectType(isChromiumBased(result)); \ No newline at end of file diff --git a/test/mocha-test-helpers.js b/test/mocha-test-helpers.js new file mode 100644 index 0000000..9e27d89 --- /dev/null +++ b/test/mocha-test-helpers.js @@ -0,0 +1,26 @@ +const assert = require('assert'); +const UAParser = require('ua-parser-js'); +const { isAppleSilicon, isChromiumBased } = require('ua-parser-js/helpers'); + +describe('isAppleSilicon', () => { + it('Can detect Apple Silicon device', () => { + + // non-real ua + const macARM = 'Mozilla/5.0 (Macintosh; ARM; Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0'; + const macIntel = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:97.0) Gecko/20100101 Firefox/97.0'; + + assert.equal(isAppleSilicon(UAParser(macIntel)), false); + assert.equal(isAppleSilicon(UAParser(macARM)), true); + }); +}); + +describe('isChromiumBased', () => { + it('Can detect Chromium-based browser', () => { + + const edge = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.58'; + const firefox = 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/111.0'; + + assert.equal(isChromiumBased(UAParser(edge)), true); + assert.equal(isChromiumBased(UAParser(firefox)), false); + }); +}); \ No newline at end of file