test.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var assert = require('assert');
  2. var requirejs = require('requirejs');
  3. var UAParser = require('./../src/ua-parser');
  4. var browsers = require('./browser-test.json');
  5. var cpus = require('./cpu-test.json');
  6. var devices = require('./device-test.json');
  7. var engines = require('./engine-test.json');
  8. var os = require('./os-test.json');
  9. var parser = new UAParser();
  10. var methods = [
  11. {
  12. title : 'getBrowser',
  13. label : 'browser',
  14. list : browsers,
  15. properties : ['name', 'major', 'version']
  16. },
  17. {
  18. title : 'getCPU',
  19. label : 'cpu',
  20. list : cpus,
  21. properties : ['architecture']
  22. },
  23. {
  24. title : 'getDevice',
  25. label : 'device',
  26. list : devices,
  27. properties : ['model', 'type', 'vendor']
  28. },
  29. {
  30. title : 'getEngine',
  31. label : 'engine',
  32. list : engines,
  33. properties : ['name', 'version']
  34. },
  35. {
  36. title : 'getOS',
  37. label : 'os',
  38. list : os,
  39. properties : ['name', 'version']
  40. }];
  41. describe('UAParser()', function () {
  42. var ua = 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6';
  43. assert.deepEqual(UAParser(ua), new UAParser().setUA(ua).getResult());
  44. });
  45. for (var i in methods) {
  46. describe(methods[i]['title'], function () {
  47. for (var j in methods[i]['list']) {
  48. if (!!methods[i]['list'][j].ua) {
  49. describe('[' + methods[i]['list'][j].desc + ']', function () {
  50. describe('"' + methods[i]['list'][j].ua + '"', function () {
  51. var expect = methods[i]['list'][j].expect;
  52. var result = parser.setUA(methods[i]['list'][j].ua).getResult()[methods[i]['label']];
  53. methods[i]['properties'].forEach(function(m) {
  54. it('should return ' + methods[i]['label'] + ' ' + m + ': ' + expect[m], function () {
  55. assert.equal(result[m], expect[m] != 'undefined' ? expect[m] : undefined);
  56. });
  57. });
  58. });
  59. });
  60. }
  61. }
  62. });
  63. }
  64. describe('Returns', function () {
  65. it('getResult() should returns JSON', function(done) {
  66. assert.deepEqual(new UAParser('').getResult(),
  67. {
  68. ua : '',
  69. browser: { name: undefined, version: undefined, major: undefined },
  70. cpu: { architecture: undefined },
  71. device: { vendor: undefined, model: undefined, type: undefined },
  72. engine: { name: undefined, version: undefined},
  73. os: { name: undefined, version: undefined }
  74. });
  75. done();
  76. });
  77. });
  78. describe('Extending Regex', function () {
  79. var uaString = 'Mozilla/5.0 MyOwnBrowser/1.3';
  80. var myOwnBrowser = [[/(myownbrowser)\/((\d+)?[\w\.]+)/i], [UAParser.BROWSER.NAME, UAParser.BROWSER.VERSION, UAParser.BROWSER.MAJOR]];
  81. var parser1 = new UAParser(uaString, {browser: myOwnBrowser});
  82. assert.equal(parser1.getBrowser().name, 'MyOwnBrowser');
  83. assert.equal(parser1.getBrowser().version, '1.3');
  84. assert.equal(parser1.getBrowser().major, '1');
  85. var parser2 = new UAParser({browser: myOwnBrowser});
  86. assert.equal(parser2.getBrowser().name, undefined);
  87. parser2.setUA(uaString);
  88. assert.equal(parser2.getBrowser().name, 'MyOwnBrowser');
  89. assert.equal(parser1.getBrowser().version, '1.3');
  90. });
  91. describe('Using Require.js', function () {
  92. it('should loaded automatically', function(done) {
  93. requirejs.config({
  94. baseUrl : 'dist',
  95. paths : {
  96. 'ua-parser-js' : 'ua-parser.min'
  97. }
  98. });
  99. requirejs(['ua-parser-js'], function(ua) {
  100. var parser = new ua('Dillo/1.0');
  101. assert.deepEqual(parser.getBrowser().name, 'Dillo');
  102. done();
  103. });
  104. });
  105. });