123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- 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();
- });
- });
- });
|