| var assert = require('assert'); |
| var requirejs = require('requirejs'); |
| var UAParser = require('./../src/ua-parser'); |
| var browsers = require('./browser-test.json'); |
| var cpus = require('./cpu-test.json'); |
| var devices = require('./device-test.json'); |
| var engines = require('./engine-test.json'); |
| var os = require('./os-test.json'); |
| var parser = new UAParser(); |
| var methods = [ |
| { |
| title : 'getBrowser', |
| label : 'browser', |
| list : browsers, |
| properties : ['name', 'major', 'version'] |
| }, |
| { |
| title : 'getCPU', |
| label : 'cpu', |
| list : cpus, |
| properties : ['architecture'] |
| }, |
| { |
| title : 'getDevice', |
| label : 'device', |
| list : devices, |
| properties : ['model', 'type', 'vendor'] |
| }, |
| { |
| title : 'getEngine', |
| label : 'engine', |
| list : engines, |
| properties : ['name', 'version'] |
| }, |
| { |
| title : 'getOS', |
| label : 'os', |
| list : os, |
| properties : ['name', 'version'] |
| }]; |
| |
| describe('UAParser()', function () { |
| var ua = 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6'; |
| assert.deepEqual(UAParser(ua), new UAParser().setUA(ua).getResult()); |
| }); |
| |
| for (var i in methods) { |
| describe(methods[i]['title'], function () { |
| for (var j in methods[i]['list']) { |
| if (!!methods[i]['list'][j].ua) { |
| describe('[' + methods[i]['list'][j].desc + ']', function () { |
| describe('"' + methods[i]['list'][j].ua + '"', function () { |
| var expect = methods[i]['list'][j].expect; |
| var result = parser.setUA(methods[i]['list'][j].ua).getResult()[methods[i]['label']]; |
| |
| methods[i]['properties'].forEach(function(m) { |
| it('should return ' + methods[i]['label'] + ' ' + m + ': ' + expect[m], function () { |
| assert.equal(result[m], expect[m] != 'undefined' ? expect[m] : undefined); |
| }); |
| }); |
| }); |
| }); |
| } |
| } |
| }); |
| } |
| |
| describe('Returns', function () { |
| it('getResult() should returns JSON', function(done) { |
| assert.deepEqual(new UAParser('').getResult(), |
| { |
| ua : '', |
| browser: { name: undefined, version: undefined, major: undefined }, |
| cpu: { architecture: undefined }, |
| device: { vendor: undefined, model: undefined, type: undefined }, |
| engine: { name: undefined, version: undefined}, |
| os: { name: undefined, version: undefined } |
| }); |
| done(); |
| }); |
| }); |
| |
| describe('Extending Regex', function () { |
| var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3'; |
| var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]]; |
| |
| var parser1 = new UAParser(uaString, {browser: myOwnBrowser}); |
| assert.equal(parser1.getBrowser().name, 'MyOwnBrowser'); |
| assert.equal(parser1.getBrowser().version, '1.3'); |
| assert.equal(parser1.getBrowser().major, '1'); |
| |
| var parser2 = new UAParser({browser: myOwnBrowser}); |
| assert.equal(parser2.getBrowser().name, undefined); |
| parser2.setUA(uaString); |
| assert.equal(parser2.getBrowser().name, 'MyOwnBrowser'); |
| assert.equal(parser1.getBrowser().version, '1.3'); |
| }); |
| |
| describe('Using Require.js', function () { |
| it('should loaded automatically', function(done) { |
| requirejs.config({ |
| baseUrl : 'dist', |
| paths : { |
| 'ua-parser-js' : 'ua-parser.min' |
| } |
| }); |
| requirejs(['ua-parser-js'], function(ua) { |
| var parser = new ua('Dillo/1.0'); |
| assert.deepEqual(parser.getBrowser().name, 'Dillo'); |
| done(); |
| }); |
| }); |
| }); |