From e7e6abff8b77193c239a89c1dfa7a065fbe7af79 Mon Sep 17 00:00:00 2001 From: Denis Demchenko Date: Sat, 30 Jun 2018 17:25:47 +0300 Subject: [PATCH] Fix Bowser constructor, add some tests --- src/bowser.js | 9 +++++---- test/unit/bowser.js | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 test/unit/bowser.js diff --git a/src/bowser.js b/src/bowser.js index d3954a9..b0fbc99 100644 --- a/src/bowser.js +++ b/src/bowser.js @@ -17,21 +17,22 @@ import Parser from './parser'; class Bowser { /** * Creates an object that parses UA - * @param UA + * @param {String} UA — UserAgent string + * @param {Boolean} [skipParsing=false] — same as skipParsing for Parser * * @example * const bowser = new Bowser(window.navigator.userAgent); * bowser.getBrowser() */ - constructor(UA) { + constructor(UA, skipParsing=false) { if (!UA) { throw new Error('UserAgent is not defined'); } - return new Parser(UA); + return new Parser(UA, skipParsing); } static parse(UA) { - return (new this.constructor(UA)).getResult(); + return (new Bowser(UA)).getResult(); } /** diff --git a/test/unit/bowser.js b/test/unit/bowser.js new file mode 100644 index 0000000..4cd48a7 --- /dev/null +++ b/test/unit/bowser.js @@ -0,0 +1,18 @@ +import test from 'ava'; +import Bowser from '../../src/bowser'; +import Parser from '../../src/parser'; + +const UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 OPR/43.0.2442.1165'; +const browser = new Bowser(UA); + +test('Bowser`s constructor returns a Parser instance', (t) => { + t.truthy(browser instanceof Parser); +}); + +test('Bowser`s constructor fails if UA is empty', (t) => { + t.throws(() => (new Bowser())); +}); + +test('Bowser.parse parses UA and returns result', (t) => { + t.deepEqual(Bowser.parse(UA), browser.getResult()); +});