From a9c4677c86b798933af51a462d36c808687f3cd7 Mon Sep 17 00:00:00 2001 From: Will Soares Date: Sun, 23 Aug 2020 16:55:29 -0300 Subject: [PATCH] feat: add support for using alias in 'is' method --- src/parser.js | 6 ++++-- test/unit/parser.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/parser.js b/src/parser.js index 2fcfcab7..bd453e97 100644 --- a/src/parser.js +++ b/src/parser.js @@ -474,10 +474,12 @@ class Parser { * Is anything? Check if the browser is called "anything", * the OS called "anything" or the platform called "anything" * @param {String} anything + * @param [includingAlias=false] The flag showing whether alias will be included into comparison * @returns {Boolean} */ - is(anything) { - return this.isBrowser(anything) || this.isOS(anything) || this.isPlatform(anything); + is(anything, includingAlias = false) { + return this.isBrowser(anything, includingAlias) || this.isOS(anything) + || this.isPlatform(anything); } /** diff --git a/test/unit/parser.js b/test/unit/parser.js index caf59001..66036fd3 100644 --- a/test/unit/parser.js +++ b/test/unit/parser.js @@ -165,6 +165,30 @@ test('Parser.is should pass', (t) => { t.is(parser.is('macos'), true); }); +test('Parser.is should pass when not including aliases', (t) => { + t.is(edgeParser.is('Microsoft Edge', false), true); + t.is(edgeParser.is('microsoft edge', false), true); + t.is(edgeParser.is('mIcrosoft eDge', false), true); + t.is(edgeParser.is('edge', false), false); + t.is(edgeParser.is('Edge', false), false); + t.is(edgeParser.is('desktop', false), false); + t.is(edgeParser.is('macos', false), false); + t.is(edgeParser.is('mobile', false), true); + t.is(edgeParser.is('android', false), true); +}); + +test('Parser.is should pass when including aliases', (t) => { + t.is(edgeParser.is('Microsoft Edge', true), true); + t.is(edgeParser.is('microsoft edge', true), true); + t.is(edgeParser.is('mIcrosoft eDge', true), true); + t.is(edgeParser.is('edge', true), true); + t.is(edgeParser.is('Edge', true), true); + t.is(edgeParser.is('desktop', true), false); + t.is(edgeParser.is('macos', true), false); + t.is(edgeParser.is('mobile', true), true); + t.is(edgeParser.is('android', true), true); +}); + test('Parser.is using constants should pass', (t) => { t.is(parser.is(Bowser.BROWSER_MAP.opera), true); t.is(parser.is(Bowser.PLATFORMS_MAP.desktop), true); @@ -199,3 +223,8 @@ test('Parser.isBrowser should pass for non-aliased browsers', (t) => { t.is(focusParser.isBrowser('Focus', true), true); t.is(focusParser.isBrowser('Focus', false), true); }); + +test('Parser.isEngine should pass', (t) => { + t.is(parser.isEngine('blink'), true); + t.is(parser.isEngine('webkit'), false); +});