2017-05-03 15:35:00 +02:00
|
|
|
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);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2017-12-10 21:51:33 +01:00
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2017-05-03 15:35:00 +02:00
|
|
|
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]];
|
2017-08-14 05:01:11 +02:00
|
|
|
|
|
|
|
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');
|
2017-05-03 15:35:00 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
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();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|